我需要注释掉当前目录和任何子目录中每个文件的所有包含“dlclose”的行(递归)。根据我从各种指南中找到的信息,这是我目前最好的猜测。
grep -lIR "dlclose" . | grep -v ".svn" | sed -i 's/.*dlclose.*/\/\/&/g'
两个 grep 成功找到了我想要更改的所有文件,但是sed
声称unterminated s command
.
答案1
您正在尝试就地编辑(-i
选项) 这STDIN
。
消除-i
选项,它是无用的。
笔记:
你可以大大加快命令速度避免第二次 grep,在根目录排除不必要的目录
尝试
grep -lIR --exclude-dir=.svn "dlclose" . | xargs sed -i bak 's/.*dlclose.*/\/\/&/g'
或者
for f in $(grep -lIR --exclude-dir=.svn "dlclose" .)
do
sed -i bak 's/.*dlclose.*/\/\/&/g' $f
done