在多个文件中查找和替换正则表达式的最佳工具是什么?

时间:2008-09-19 14:06:45

标签: regex search replace

如果可能,最好使用免费工具。

此外,搜索多个正则表达式并使用不同字符串替换的选项将是一个奖励。

21 个答案:

答案 0 :(得分:36)

的Perl。说真的,它使sysadmin的东西变得如此简单。这是一个例子:

perl -pi -e 's/something/somethingelse/g' *.log

答案 1 :(得分:23)

快速而简单:

sed -e "s/pattern/result/" <file list>

您也可以使用find:

加入它
find <other find args> -exec sed -e "s/pattern/result/" "{}" ";"

答案 2 :(得分:5)

Textpad在Windows上做得很好。而且它也是一个非常好的编辑。

答案 3 :(得分:5)

我为Windows编写了一个免费的命令行工具来执行此操作。它被称为rxrepl,它支持unicode和文件搜索。有些人可能觉得它很有用。

答案 4 :(得分:4)

不出所料,Perl在处理这个问题时做得很好,与一个体面的shell结合起来:

for file in @filelist ; do
  perl -p -i -e "s/pattern/result/g" $file
done

这具有相同的效果(但效率更高,没有竞争条件):

for file in @filelist ; do
  cat $file | sed "s/pattern/result/" > /tmp/newfile
  mv /tmp/newfile $file
done

答案 5 :(得分:4)

Emacs的目录编辑器具有`dired-do-query-replace-regexp'功能,可以搜索并替换一组标记文件上的正则表达式。

答案 6 :(得分:3)

在Windows下,我曾经喜欢WinGrep

在Ubuntu下,我使用的是Regexxer。

答案 7 :(得分:3)

对于Windows上的多个文件的查找和替换,我发现rxFind非常有帮助。

答案 8 :(得分:2)

对于Mac OS X,TextWrangler可以胜任。

答案 9 :(得分:2)

我个人最喜欢的是JGSoft的PowerGrep。它与RegexBuddy接口,可以帮助您创建和测试正则表达式,自动备份所有更改(并提供撤消功能),提供解析多个目录(具有文件名模式)的能力,甚至支持文件格式例如Microsoft Word,Excel和PDF。

PowerGrep Screenshot

答案 10 :(得分:1)

我会选择bash + find + sed。

答案 11 :(得分:1)

如果'textpad'是一个有效的答案,我会建议你Sublime Text

我发现,多光标编辑是一种更有效的替换方式,但其“Find in Files”是批量正则表达式/普通查找替换的顶级方法。

答案 12 :(得分:1)

我喜欢这个工具:

http://www.abareplace.com/

为您提供正则表达式的“当您键入”预览...对于那些不熟悉RE的人来说非常棒...而且它一次只能更改数百或数千个文件......

然后让你贬低你的改变......

非常好......

Patrick Steil - http://www.podiotools.com

答案 13 :(得分:1)

在Windows中,有一种最好的免费替代方法:Notepad ++

转到“搜索” - &gt; “在文件中查找”。可以给出目录,文件模式,设置正则表达式然后预览匹配,最后递归替换所有文件。

答案 14 :(得分:1)

我有Unix和Ubuntu的奢侈品;在这两者中,我使用 gawk 来处理需要逐行搜索和替换的任何内容,特别是对于子字符串的逐行。 最近,对于数百个文件(一个目录)中的数百万行处理1100次更改,这是最快的 在Ubuntu上我是regexxer的粉丝

 sudo apt-get install regexxer

答案 15 :(得分:1)

Vim救援(和总统;-))。试试:

vim -c "argdo! s:foo:bar:gci" <list_of_files>

(我喜欢Vim的-c开关,这很神奇。 或者,如果您已经在Vim中,并打开文件,例如:

vim <list_of_files>

刚发出:

:bufdo! s:foo:bar:gci

当然sedperl也有能力。 HTH。

答案 16 :(得分:0)

我发现工具RxFind很有用(免费的OSS)。

答案 17 :(得分:0)

jEdit正则表达式搜索和替换文件非常不错。但是如果你只是用它那就略微矫枉过正了。它也不支持你要求的多表达式替换。

答案 18 :(得分:0)

Brackets(源代码,deb / Ubuntu,OSx和Windows)具有良好的结果可视化,允许单独选择它们以应用替换。您可以按标准文本搜索,区分大小写或不区分大小写。 非常重要:您可以在搜索中排除文件和目录的模式。

答案 19 :(得分:0)

至少25年以来,我一直在使用Emacs跨大量文件进行大规模替换。运行etags以指定要搜索的任何文件集:

$ etags file1.txt file2.md dir1/*.yml dir2/*.json dir3/*.md

然后打开Emacs并运行tags-query-replace,这将提示您进行正则表达式和替换:

\b\(foo\)\b
\1bar

答案 20 :(得分:0)

如果您是程序员,那么很多IDE也应该做得很好。

对我来说PyCharm表现不错:

  • 编辑>查找>替换为路径 Strg + Shift + R
  • 检查顶部的 Regex

它具有实时预览。