我一直在使用grepWin进行文件的一般搜索,而当我想要替换或者你有什么时候使用wingrep。
GrepWin有广泛的正则表达式实现,但不做替换(如上所述)。
Wingrep会替换,但是正则表达式的实现范围非常有限。
有没有人知道任何(最好是免费的)grep工具用于替换Windows并且具有正则表达式的合理实现?
提前致谢。
答案 0 :(得分:3)
我认为命令行中的perl是您正在寻找的答案。广泛的便携式,强大的正则表达式支持。
假设您有以下文件:
foo
bar
baz
quux
你可以使用
perl -pne 's/quux/splat!/' -i /tmp/foo
生产
foo
bar
baz
splat!
神奇之处在于Perl的命令行开关:
答案 1 :(得分:2)
我为这类任务使用了很多Cygwin。
不幸的是,它有世界上最不直观的安装程序,但一旦安装正确,它就非常实用......除了复制和粘贴的一些小问题以及行结尾的奇怪问题。
好处是所有工具都像真正的GNU系统一样工作,所以如果你已经熟悉Linux或类似的东西,你就不必学习任何新东西(除了如何使用那个疯狂的安装程序)
总的来说,我认为这些优势弥补了一些可用性问题。
答案 2 :(得分:1)
如果您使用的是Windows,则可以使用vbscript(无需下载)。它带有正则表达式。例如,将“one”改为“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以了解有关使用正则表达式的更多信息