如何“搜索和替换”许多文件?

我使用grep命令在许多文件中搜索字符串。 有没有类似“搜索和替换”的东西?

您正在寻找sed命令。 例如,要在当前目录的所有文本文件中将“dog”替换为“cat”:

 sed -i 's/dog/cat/' *.txt 

sed是正确的工具; 但是,作为替代方案,您甚至可以在vim使用ex命令:

 vim -c 'args  | argdo %s/cat/dog/g | x' 

其中是要进行替换的文件或模式的列表。

想到了sed。 例:

 sed s/cat/dog/ output 

这会在一行中搜索cat并将dog放在文件输入中的位置并写入文件输出。

您可以在Ex模式下使用Vim:

 for b in *.txt do ex -sc '%s/OLD/NEW/g|x' "$b" done 
  1. %选择所有行

  2. 替代品

  3. g替换每行中的所有实例

  4. x保存并关闭