使用SED替换大量HTML文件中的域名

时间:2014-11-11 20:31:08

标签: regex replace sed find escaping

好的,我放弃了。我已经尝试了几个小时来获取sed来替换数千个html文件中错误格式化的域名,但我似乎无法使斜杠(可能是点/冒号)的转义正确。

要查找的文字: http://www.domain.com/http

替换为: HTTP

我尝试了什么:

sed -i 's/http:\/\/www.domain.com\/http/http/'
sed -i 's/http\\:\\/\\/www\\.domain\\.com\\/http/http/'
sed -i 's/http\:\/\/www\.domain\.com\/http/http/'
sed -i 's=http://www.domain.com/http=http='

更新

随着它的发生,我正在追逐追逐鬼魂。一段javascript正在将http://www.domain.com/添加到我所有img标签的开头!不幸的是现在我需要尝试从所有页面中删除它。所以不是上面的,我现在期待:

替换为: http://www.domain.com/&#39 + IMG [0]

' + IMG [0]

我试过以下无济于事:

find . -name "*.html" -type f -exec sed -i 's|http://www\.domain\.com/\'+img\[0\]|\'+img\[0\]|g' {} \;
find . -name "*.html" -type f -exec sed -i 's|http://www\.domain\.com/\'+img[0]|\'+img[0]|g' {} \;

我似乎再次陷入某些角色的逃避。只有这次当我尝试运行上述命令之一时,它才会带我到一个>提示。

1 个答案:

答案 0 :(得分:2)

您可以使用不同的分隔符来避免很多转义。点.是唯一需要转义的特殊含义字符,其他所有字符都可以匹配。也可以在模式中使用全局修饰符。

sed -i 's|http://www\.domain\.com/http|http|g'

修改 - 您可以使用以下内容替换其他部分。

sed -i "s|http://www\.domain\.com/\('[+]img\[0\]\)|\1|g"