首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有用于cmd.exe的类似sed的实用程序?

是否有用于cmd.exe的类似sed的实用程序?
EN

Stack Overflow用户
提问于 2008-09-24 14:01:42
回答 16查看 259K关注 0票数 174

我想使用windows命令行(cmd.exe)以编程方式编辑文件内容。在*nix中,有用于此任务的sed。在windows中有没有什么有用的本机等价物?

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2011-05-17 17:35:12

今天powershell救了我。

对于grep,有:

代码语言:javascript
复制
get-content somefile.txt | where { $_ -match "expression"}

代码语言:javascript
复制
select-string somefile.txt -pattern "expression"

对于sed,有以下几点:

代码语言:javascript
复制
get-content somefile.txt | %{$_ -replace "expression","replace"}

有关替换PowerShell函数的详细信息,请参阅this Microsoft article

票数 145
EN

Stack Overflow用户

发布于 2008-09-24 14:37:54

sed (和它的同类)包含在几个Unix命令包中。

  • Cygwin可以工作,但它的gigantic.
  • UnxUtils很多slimmer.
  • GnuWin32是另一个端口,works.
  • Another的替代品是AT&T研究公司的UWIN system.
  • MSYS从MinGw是另一个option.
  • Windows Subsystem for Linux是一个最“本机”的选项,但它不是默认安装在MinGw上;它有sedgrep等开箱即用,though.
  • https://github.com/mbuilov/sed-windows提供了最新的4.3和4.4版本,这些版本支持-z option,而不是列出的上层端口

如果你不想安装任何东西,而且你的系统不是Windows Server系统,那么你可以使用脚本语言(例如VBScript)。就为了这个。下面是一个粗俗的,即兴的尝试。您的命令行将如下所示

代码语言:javascript
复制
cscript //NoLogo sed.vbs s/(oldpat)/(newpat)/ < inpfile.txt > outfile.txt

其中,oldpat和newpat是Microsoft vbscript regex patterns。显然,我只实现了替换命令并做了一些假设,但您可以将其充实得更智能,并更好地理解sed命令行。

代码语言:javascript
复制
Dim pat, patparts, rxp, inp
pat = WScript.Arguments(0)
patparts = Split(pat,"/")
Set rxp = new RegExp
rxp.Global = True
rxp.Multiline = False
rxp.Pattern = patparts(1)
Do While Not WScript.StdIn.AtEndOfStream
  inp = WScript.StdIn.ReadLine()
  WScript.Echo rxp.Replace(inp, patparts(2))
Loop
票数 105
EN

Stack Overflow用户

发布于 2008-09-24 14:05:15

UnxUtils为Win32提供sed,GNUWin32也是如此。

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/127318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档