我使用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
%
选择所有行s
代替g
替换每一行中的所有实例x
保存并关闭