我一直在使用grepWin进行文件搜索,而wingrep当我想要做替换或者什么都可以。grep替换与广泛的正则表达式实现
GrepWin具有广泛的正则表达式实现,但不会执行替换(如上所述)。
Wingrep可以替代,但是正则表达式实现的范围非常有限。
有没有人知道任何(最好是免费的)用于替换窗口的grep工具,并且具有合理的正则表达式实现?
在此先感谢。
我一直在使用grepWin进行文件搜索,而wingrep当我想要做替换或者什么都可以。grep替换与广泛的正则表达式实现
GrepWin具有广泛的正则表达式实现,但不会执行替换(如上所述)。
Wingrep可以替代,但是正则表达式实现的范围非常有限。
有没有人知道任何(最好是免费的)用于替换窗口的grep工具,并且具有合理的正则表达式实现?
在此先感谢。
我对这类任务使用Cygwin颇多。
不幸的是,它有世界上最不直观的安装程序,但一旦它正确安装,它是非常有用的......除了复制和粘贴的一些小问题以及线尾的奇怪问题。
好的是,所有的工具都像真正的GNU系统一样工作,所以如果你已经熟悉Linux或类似的东西,你不必学习任何新东西(除了如何使用那个疯狂的安装程序)。
总的来说,我认为这些优势弥补了少数可用性问题。
这是一个好主意。以前我遇到过不愉快的经历,但是这绝对值得一试。谢谢:) – Russell 2010-02-04 23:34:52
我觉得perl在命令行是你正在寻找的答案。广泛的便携式,强大的正则表达式支持。
假设您有以下文件:
foo
bar
baz
quux
可以使用
perl -pne 's/quux/splat!/' -i /tmp/foo
生产
foo
bar
baz
splat!
神奇的是在Perl的命令行开关:
如果你在Windows上,你可以使用vbscript(不需要下载)。它带有正则表达式。例如,改变 “一” 到 “ONE”
Set objFS=CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objArgs = WScript.Arguments
strFile = objArgs(0)
Set objFile = objFS.OpenTextFile(strFile)
strFileContents = objFile.ReadAll
Set objRE = New RegExp
objRE.Global = True
objRE.IgnoreCase = False
objRE.Pattern = "one"
strFileContents = objRE.Replace(strFileContents,"ONE") 'simple replacement
WScript.Echo strFileContents
输出
C:\test>type file
one
two one two
three
C:\test>cscript //nologo test.vbs file
ONE
two ONE two
three
您最多可读取vbscript doc,以了解更多关于使用正则表达式
非常感谢,VB Script也为我过去几次派上用场。我曾经用它弹出一个输入框,用于参数在nant脚本中。 – Russell 2010-02-05 00:54:37
这不是真的编程相关...这对超级用户来说可能是最好的。 – 2010-02-04 23:27:57
我发现它与编程有关,因为它是一种我觉得作为程序员和编程目的无价的工具。 – Russell 2010-02-04 23:29:15
感谢您的帮助,我已经完成了替换。 :)我结束了使用grep的组合作为Windows的GNU工具的一部分。再次感谢:) – Russell 2010-02-05 01:01:08