【发布时间】:2013-03-02 10:02:15
【问题描述】:
我需要在一个目录的所有文件和子目录中递归搜索一个指定的字符串,并用另一个字符串替换这个字符串。
我知道找到它的命令可能如下所示:
grep 'string_to_find' -r ./*
但是如何将string_to_find 的每个实例替换为另一个字符串?
【问题讨论】:
-
我不相信 grep 可以做到这一点(我可能是错的)。更简单的方法是使用 sed 或 perl 进行替换
-
尝试使用
sed -i 's/.*substring.*/replace/' -
@Eddy_Em 这将用替换替换整行。您需要使用分组来捕获子字符串之前和之后的行部分,然后将其放入替换行中。
sed -i 's/\(.*\)substring\(.*\)/\1replace\2/'