好的,我放弃了。我已经尝试了几个小时来获取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' {} \;
我似乎再次陷入某些角色的逃避。只有这次当我尝试运行上述命令之一时,它才会带我到一个>提示。
答案 0 :(得分:2)
您可以使用不同的分隔符来避免很多转义。点.
是唯一需要转义的特殊含义字符,其他所有字符都可以匹配。也可以在模式中使用全局修饰符。
sed -i 's|http://www\.domain\.com/http|http|g'
修改 - 您可以使用以下内容替换其他部分。
sed -i "s|http://www\.domain\.com/\('[+]img\[0\]\)|\1|g"