如果可能,最好使用免费工具。
此外,搜索多个正则表达式并使用不同字符串替换的选项将是一个奖励。
答案 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。
答案 10 :(得分:1)
我会选择bash + find + sed。
答案 11 :(得分:1)
如果'textpad'是一个有效的答案,我会建议你Sublime Text。
我发现,多光标编辑是一种更有效的替换方式,但其“Find in Files”是批量正则表达式/普通查找替换的顶级方法。
答案 12 :(得分:1)
我喜欢这个工具:
为您提供正则表达式的“当您键入”预览...对于那些不熟悉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
当然sed
和perl
也有能力。
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)