如果可能的话最好是免费工具。
此外,搜索多个正则表达式并每个替换为不同字符串的选项将是一个额外的好处。
Perl。
说真的,它让系统管理员的工作变得更加容易。这是一个例子:
perl -pi -e 's/something/somethingelse/g' *.log
sed
又快又简单:
sed -e "s/pattern/result/" <file list>
您也可以通过
find
加入:
find <other find args> -exec sed -e "s/pattern/result/" "{}" ";"
我为 Windows 编写了一个免费的命令行工具来执行此操作。它叫做 rxrepl,它支持 unicode 和文件搜索。有些人可能会发现它很有用。
Textpad 在 Windows 上做得很好。这也是一个非常好的编辑器。
Emacs 的目录编辑器具有“dired-do-query-replace-regexp”功能,可以在一组标记的文件上搜索和替换正则表达式。
不出所料,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
对于 Windows 上多个文件的查找和替换,我发现 rxFind 非常有帮助。
对于 Mac OS X,TextWrangler 可以完成这项工作。
我个人最喜欢的是 JGSoft 的 PowerGrep。它与 RegexBuddy 接口,可以帮助您创建和测试正则表达式,自动备份所有更改(并提供撤消功能),提供解析多个目录(使用文件名模式)的能力,甚至支持文件格式,例如Microsoft Word、Excel 和 PDF。
在 Windows 中,有一个效果最好的免费替代方案:Notepad++
转到“搜索”->“在文件中查找”。人们可以给出目录、文件模式、设置正则表达式,然后预览匹配项,最后递归地替换所有文件。
我喜欢这个工具:
为您提供正则表达式的“键入时”预览...对于那些不熟悉 RE 的人来说太棒了...并且一次更改数百或数千个文件的速度非常快...
然后让您撤消您的更改...
非常好...
帕特里克·斯泰尔 - http://www.podiotools.com
我会选择 bash + find + sed。
jEdit 在文件中的正则表达式搜索和替换相当不错。不过,如果您仅将其用于此目的,那就有点矫枉过正了。它也不支持您要求的多表达式替换。
Vim 来救援(还有总统;-))。尝试:
vim -c "argdo! s:foo:bar:gci" <list_of_files>
(我很喜欢 Vim 的 -c 开关,它很神奇。 或者,如果您已经在 Vim 中,并打开了文件,例如:
vim <list_of_files>
刚刚发出:
:bufdo! s:foo:bar:gci
当然
sed
和perl
也有能力。
HTH.
我拥有 Unix 和 Ubuntu;在这两种情况下,我都使用 gawk 来处理任何需要逐行搜索和替换的内容,尤其是逐行搜索和替换子字符串。 最近,这是处理数百个文件(一个目录)中数百万行的 1100 个更改的最快速度 在 Ubuntu 上我是 regxxer 的粉丝
sudo apt-get install regexxer
如果“文本板”是一个有效的答案,我建议直接使用Sublime Text。
我发现,多光标编辑通常是一种更有效的替换方式,但它的“在文件中查找”是批量正则表达式/普通查找替换的顶级。
我发现工具 RxFind 很有用(免费 OSS)。
Brackets(源代码、deb/Ubuntu、OSx 和 Windows)具有良好的结果可视化效果,允许单独选择它们来应用替换。您可以按标准文本(区分大小写或不区分大小写)和正则表达式进行搜索。 非常重要:您可以在搜索中排除文件和目录的模式。
至少 25 年以来,我一直使用 Emacs 进行大量文件的大规模替换。运行
etags
指定要搜索的任何文件集:
$ etags file1.txt file2.md dir1/*.yml dir2/*.json dir3/*.md
然后打开 Emacs 并运行
tags-query-replace
,这会提示输入正则表达式和替换:
\b\(foo\)\b
\1bar