如何替换包含特殊字符(例如)URL的shell脚本中的一行

时间:2018-03-09 09:45:06

标签: shell perl file

我想写shell脚本来替换文件中的一行,并且该行包含特殊字符(即)它包含URL。我尝试了以下方法

sed -i 's/gadgets.url=http://gadgets.abc.com/gadgets.url=http://gadjets-ubuntu2.csez.abccorpin.com:8989/g' test/cm-system.properties

perl -0777 -pi -e 's/gadgets.url=http://gadgets.zoho.com/gadgets.url=http://gadjets-ubuntu2.csez.zohocorpin.com:8989/g' test/cm-system.properties

我也试过使用转义序列() 我仍然无法得到它

1 个答案:

答案 0 :(得分:3)

您正在使用正斜杠(/)作为分隔符。您在URL(http://部分)中也有斜杠。 您需要转义属于您匹配的字符串模式的斜杠:

sed -i 's/gadgets.url=http:\/\/gadgets.abc.com/gadgets.url=http:\/\/gadjets-ubuntu2.csez.abccorpin.com:8989/g' test/cm-system.properties

或者您可以使用不同的分隔符而不是/,例如!

sed -i 's!gadgets.url=http://gadgets.abc.com!gadgets.url=http://gadjets-ubuntu2.csez.abccorpin.com:8989!g' test/cm-system.properties