【问题标题】:how to replace a line in the shell script that contains special characters (eg) URL [duplicate]如何替换 shell 脚本中包含特殊字符的行(例如) URL [重复]
【发布时间】:2018-03-09 09:45:05
【问题描述】:

我想编写 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

我也尝试使用转义序列() 还是看不懂

【问题讨论】:

    标签: shell perl file


    【解决方案1】:

    您使用正斜杠 (/) 作为分隔符。 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
    

    【讨论】:

    • 谢谢@jack the Random,我为此伤透了脑筋....
    • @PrabuM 如果能解决您的问题,请接受答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 2013-12-23
    • 2021-03-06
    • 2010-10-06
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    相关资源
    最近更新 更多