替换包含特殊字符的句子&

时间:2020-06-29 02:01:07

标签: awk sed

在bash脚本中:

我想用以下url替换html文件中的出现单词'test': url =“ http://www.test.com/testcom&_mc_jhc=ex_XZ-r&oh=044”

search ='test'

尝试sed: sed -i'.original' 's|'"${search}"'|'"${url}"'|g' index.html

它可以工作,但它也用'test'替换了所有&

用awk尝试过: awk '{sub(/test/,'"${url}"')}1'

但同样的问题。

为什么网址中的&也被测试取代了?

有解决方案吗?

1 个答案:

答案 0 :(得分:-1)

答案是使用这个:

replaceEscaped=$(sed 's/[&/\]/\\&/g' <<<"$url") # escape it


sed -i'.original' 's|'"${search}"'|'"${replaceEscaped}"'|g' index.html