如何“搜索并替换”多个文件?

如何“搜索并替换”多个文件?

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

答案1

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

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

答案2

我想到的是 sed。例如:

sed s/cat/dog/ <input >output

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

答案3

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

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

其中<files>是您想要进行替换的文件或模式的列表。

答案4

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

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

  2. s代替

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

  4. x保存并关闭

相关内容