Regex 使用扩展正则表达式实现的grep替换

Regex 使用扩展正则表达式实现的grep替换,regex,grep,Regex,Grep,我一直在使用grepWin进行文件的一般搜索,当我想做替换或其他事情时使用wingrep GrepWin有一个广泛的正则表达式实现,但是不进行替换(如上所述) Wingrep进行替换,但是正则表达式实现的范围非常有限 是否有人知道任何(最好是免费的)用于windows的grep工具可以进行替换,并且具有正则表达式的合理实现 提前感谢。我经常使用Cygwin来完成这类任务 不幸的是,它有世界上最不直观的安装程序,但一旦安装正确,它是非常有用的。。。除了一些关于复制和粘贴的小问题,还有一个关于行尾的

我一直在使用grepWin进行文件的一般搜索,当我想做替换或其他事情时使用wingrep

GrepWin有一个广泛的正则表达式实现,但是不进行替换(如上所述)

Wingrep进行替换,但是正则表达式实现的范围非常有限

是否有人知道任何(最好是免费的)用于windows的grep工具可以进行替换,并且具有正则表达式的合理实现


提前感谢。

我经常使用Cygwin来完成这类任务

不幸的是,它有世界上最不直观的安装程序,但一旦安装正确,它是非常有用的。。。除了一些关于复制和粘贴的小问题,还有一个关于行尾的奇怪问题

好的是,所有的工具都像在真正的GNU系统上一样工作,所以如果你已经熟悉Linux或类似的系统,你不必学习任何新的东西(除了如何使用疯狂的安装程序)


总的来说,我认为这些优点弥补了几个可用性问题。

我认为命令行中的perl是您想要的答案。广泛的可移植性,强大的正则表达式支持

假设您有以下文件:

foo
bar
baz
quux
你可以用

perl -pne 's/quux/splat!/' -i /tmp/foo
产生

foo
bar
baz
splat!
神奇之处在于Perl的命令行开关:

  • -e:以perl命令的形式执行下一个参数
  • -n:在每一行上执行命令
  • -p:打印命令的结果,而不发出显式命令 “打印”语句
  • -i:进行适当的替换。使用 您的命令的输出。。。小心使用

如果您在Windows上,则可以使用vbscript(无需下载)。它带有正则表达式。例如将“一”改为“一”

输出

C:\test>type file
one
two one two
three

C:\test>cscript //nologo test.vbs file
ONE
two ONE two
three

您可以阅读以了解有关使用regex的更多信息

这实际上与编程无关。。。这可能是超级用户的最佳选择。我发现它与编程相关,因为作为程序员和编程目的,它是一个非常宝贵的工具。谢谢大家的帮助,我已经完成了替换。:)我最终使用grep的组合作为GNU windows工具的一部分。再次感谢:)这是个好主意。我以前在你提到的问题上有过不好的经历,但是绝对值得一试。谢谢:)非常感谢,VB脚本在过去对我来说也有用过几次。我曾经用它弹出nant脚本中参数的输入框。
C:\test>type file
one
two one two
three

C:\test>cscript //nologo test.vbs file
ONE
two ONE two
three