查找并替换多个文件上的文本

时间:2014-07-02 04:55:00

标签: linux bash ubuntu sed

我正在尝试使用其https版本替换许多html页面上存在的特定链接。我试过了:

grep -rl "http://server.iad.liveperson.net/hc/88956865/" ./ | xargs sed -i "s/http:\/\/server.iad.liveperson.net\/hc\/88956865\//https:\/\/server.iad.liveperson.net\/hc\/88956865\//g"

当我这样做时,即使是sudo,我也会

sed: couldn't open temporary file ./customers/sedTR3AMu: Permission denied

customers只是./中的第一个目录。所以,它挂在我认为的第一个文件上,但不确定除此之外还有什么问题。

感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

您应该尝试的第一件事是独立运行sed命令,以获取您之前知道包含该字符串的文件。我觉得sed命令可能会抱怨/个字符......

您应该尝试将sed命令更改为:

sed -i 's;http://server.iad.liveperson.net/hc/88956865/;https://server.iad.liveperson.net/hc/88956865/;g'

也就是说,使用;代替/作为分隔符,因此您不必每次都使用/转义\

答案 1 :(得分:1)

必须运行以root身份登录的命令,因为sed -i在/ tmp中创建临时文件并需要写访问权限。

谢谢:使用jim的语法和分号很好用。 ooga,我没有必要逃避字面时期。