我想写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
我也试过使用转义序列() 我仍然无法得到它
答案 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