我想使用windows命令行(cmd.exe)以编程方式编辑文件内容。在*nix中,有用于此任务的sed。在windows中有没有什么有用的本机等价物?
发布于 2011-05-17 17:35:12
今天powershell救了我。
对于grep,有:
get-content somefile.txt | where { $_ -match "expression"}或
select-string somefile.txt -pattern "expression"对于sed,有以下几点:
get-content somefile.txt | %{$_ -replace "expression","replace"}有关替换PowerShell函数的详细信息,请参阅this Microsoft article。
发布于 2008-09-24 14:37:54
sed (和它的同类)包含在几个Unix命令包中。
sed,grep等开箱即用,though.-z option,而不是列出的上层端口如果你不想安装任何东西,而且你的系统不是Windows Server系统,那么你可以使用脚本语言(例如VBScript)。就为了这个。下面是一个粗俗的,即兴的尝试。您的命令行将如下所示
cscript //NoLogo sed.vbs s/(oldpat)/(newpat)/ < inpfile.txt > outfile.txt其中,oldpat和newpat是Microsoft vbscript regex patterns。显然,我只实现了替换命令并做了一些假设,但您可以将其充实得更智能,并更好地理解sed命令行。
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发布于 2008-09-24 14:05:15
UnxUtils为Win32提供sed,GNUWin32也是如此。
https://stackoverflow.com/questions/127318
复制相似问题