from
以下命令将当前目录或其子目录中任何文件中出现的该词替换为to
:
ack-grep -l --print0 --text from | xargs -0 -n 1 sed -i -e 's/from/to/g'
我从这线。
如何替换包含多个单词而不是一个单词的字符串?例如替换laughing babies
为smiling little children
。
我尝试了以下方法,但是没有效果:
ack-grep -l --print0 --text 'laughing babies' | xargs -0 -n 1 sed -i -e "s/'laughing babies'/'smiling little children'/g"
ack-grep -l --print0 --text 'laughing babies' | xargs -0 -n 1 sed -i -e 's/"laughing babies"/"smiling little children"/g'
不知道这是否重要但我仍在继续Ubuntu 11.10
。
答案1
实际上,您不需要引号,sed
可以处理空格,并且引号将被视为模式的一部分(除非您将其转义)。只需执行以下操作:
ack-grep -l --print0 --text 'laughing babies' | xargs -0 -n 1 sed -i -e 's/laughing babies/smiling little children/g'
我不明白你为什么要这个grep
部分,你可以sed
直接在目录中的所有文件上运行,sed
速度很快:
sed -i -e 's/laughing babies/smiling little children/g' *