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

Umb*_*ule 27 regex search replace

如果可能,最好是免费工具

此外,搜索多个正则表达式并且每个替换为不同字符串的选项将是奖励.

Ale*_*ort 39

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

__CODE__

  • 作为注释,标志是:`p`:print,对于每一行,`i`:内联编辑文件,`e`:在命令行上给出的执行命令 (2认同)

Fro*_*sty 24

sed快速简便:

sed -e "s/pattern/result/" <file list>
Run Code Online (Sandbox Code Playgroud)

您也可以通过查找加入:

find <other find args> -exec sed -e "s/pattern/result/" "{}" ";"
Run Code Online (Sandbox Code Playgroud)

  • 这似乎不会更新文件,只是输出它们.`-i`参数似乎可以解决这个问题.另请参见http://stackoverflow.com/questions/10445934/change-multiple-files (4认同)

lev*_*vik 6

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

  • 是的,它确实.您要做的是右键单击并在搜索结果中选择"全部打开".这将打开所有找到的文件.然后在"替换"对话框中,单击"所有文档"单选按钮以获取替换位置.完成后,单击"全部保存". (6认同)

小智 6

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


Cra*_*der 5

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

for file in @filelist ; do
  perl -p -i -e "s/pattern/result/g" $file
done
Run Code Online (Sandbox Code Playgroud)

具有与以下相同的效果(但更有效,并且没有竞争条件):

for file in @filelist ; do
  cat $file | sed "s/pattern/result/" > /tmp/newfile
  mv /tmp/newfile $file
done
Run Code Online (Sandbox Code Playgroud)


lin*_*lof 5

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