grep或find和sed来替换字符串

时间:2012-02-29 00:05:50

标签: regex sed grep

我已经在这里工作了几个小时,由于某种原因,我无法找出为什么这个命令不能替换所需的字符串。我正在尝试这个

grep -r -l 'first\.second\.third\.fourth' . | xargs -i -e sed's/first\.second\.third\.fourth/foo\.bar\.fooey/g'

所以我要做的是递归搜索包含大量文件的文件夹,并将"first.second.third.fourth"更改为"foo.bar.fooey"。在我运行grep和sed命令之后,我再次grep以确保找不到“first.second.third.fourth”但是它出现了,我相信的是同样多次。所以我几乎完全按照我的智慧结束了。

非常感谢任何帮助。谢谢大家。

2 个答案:

答案 0 :(得分:3)

-i应该是sed的参数,而不是xargs。正如@potong指出的那样,“。”必须转义sed匹配字符串中的字符,否则它们将匹配任何内容。

grep -r -l 'first.second.third.fourth' . | xargs sed -i 's/first\.second\.third\.fourth/foo.bar.fooey/g'

答案 1 :(得分:0)

为什么不使用单个find / sed

find /YOUR/DIR -type f -iname "*YOURFILENAMEPATTERN*" \
     -exec sed -i 's/"first.second.third.fourth"/"foo.bar.fooey"/g'