使用 grep 和 sed 查找并替换(并为更改的文件创建日志)
find and replace in place with grep and sed (and make a log for the files changed)
我的脚本如下(变量在上面由用户输入定义):
grep -RlI $OLD $PATH > $LIST
while read line
do
FILE=echo $line
sed -i '' -e 's|$OLD|$NEW|g' $FILE
done < $LIST
除了 sed 失败之外,它似乎可以工作,因为
"sed: -i may not be used with stdin"
我做错了什么?也许这是我想要做的错误方法?
(顺便说一句,这是替换许多文件中出现的字符串,并创建一个列出包含匹配项的所有文件的文件。)
非常感谢,
C
尝试更换
FILE=echo $line
和
FILE="$line"
sed
抱怨是因为 $FILE
变量不包含任何内容,或者只包含空格。检查 $LIST
引用的文件的内容;确保没有空行或只有空格的行。
我的脚本如下(变量在上面由用户输入定义):
grep -RlI $OLD $PATH > $LIST
while read line
do
FILE=echo $line
sed -i '' -e 's|$OLD|$NEW|g' $FILE
done < $LIST
除了 sed 失败之外,它似乎可以工作,因为 "sed: -i may not be used with stdin"
我做错了什么?也许这是我想要做的错误方法? (顺便说一句,这是替换许多文件中出现的字符串,并创建一个列出包含匹配项的所有文件的文件。) 非常感谢, C
尝试更换
FILE=echo $line
和
FILE="$line"
sed
抱怨是因为 $FILE
变量不包含任何内容,或者只包含空格。检查 $LIST
引用的文件的内容;确保没有空行或只有空格的行。