我已经在这里工作了几个小时,由于某种原因,我无法找出为什么这个命令不能替换所需的字符串。我正在尝试这个
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”但是它出现了,我相信的是同样多次。所以我几乎完全按照我的智慧结束了。
非常感谢任何帮助。谢谢大家。
答案 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'