提问者:小点点

如何使用grep搜索和替换


我需要在目录中的所有文件和子目录中递归搜索指定的字符串,并将此字符串替换为另一个字符串。

我知道查找它的命令可能如下所示:

grep 'string_to_find' -r ./*

但是,如何将string_to_find的每个实例替换为另一个字符串呢?


共3个答案

匿名用户

另一种选择是使用 find,然后将其传递到 sed。

find /path/to/files -type f -exec sed -i 's/oldstring/new string/g' {} \;

匿名用户

我得到了答案。

grep -rl matchstring somedir/ | xargs sed -i 's/string1/string2/g'

匿名用户

你甚至可以这样做:

grep -rl 'windows' ./ | xargs sed -i 's/windows/linux/g'

这将在所有文件中相对于当前目录搜索字符串“windows”,并将每个文件中出现的字符串替换为“linux”。