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

时间:2020-03-06 14:26:06  来源:igfitidea点击:

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

同样,搜索多个正则表达式并用不同的字符串替换每个正则表达式的选项也将是一个好处。

解决方案

在Windows下,我曾经喜欢WinGrep

在Ubuntu下,我使用Regexxer。

我会去bash + find + sed。

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

对于Mac OS X,TextWrangler可以完成这项工作。

jEdit的正则表达式在文件中搜索和替换非常不错。但是,如果仅将其用于此操作,则可能会略为过度。它还不支持我们要求的多表达式替换。

Perl。严重的是,它使sysadmin的工作变得如此轻松。这是一个例子:

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

毫不奇怪,Perl结合了不错的外壳,可以很好地处理此问题:

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

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

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。

sed快速简便:

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

我们也可以通过find加入:

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

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

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

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

我拥有Unix和Ubuntu的奢华;在这两种方法中,我都将gawk用于需要逐行搜索和替换的任何事物,尤其是对于子串的逐行。
最近,这是处理数百个文件(一个目录)中数百万行的1100项更改的最快方法
在Ubuntu上,我是regexxer的粉丝

sudo apt-get install regexxer