如何正确使用sed命令来替换包含/ delimiter的值

时间:2018-02-16 05:32:28

标签: linux shell sed

文件:abc.properties

tomcat.home=/opt/tomcat

设置为/ usr / local / tomcat。以下cmd正在运行。

sed -i "/tomcat.home=/ s/=.*/="usr\\/local\\/tomcat"/" abc.properties

设置为$ WORKSPACE / tomcat。由于$ WORKSPACE的值具有/ delimeters,因此cmd不起作用。

sed -i "/tomcat.home=/ s/=.*/="$WORKSPACE\\/tomcat"/" abc.properties

任何人都知道如何在cmd以上取得成功。

谢谢,感谢您的支持......

1 个答案:

答案 0 :(得分:1)

Sed允许您使用任何想要的字符作为分隔符。无论如何,s用作分隔符:

sed -Ee 's/foo/bar/'
sed -Ee 's|foo|bar|'
sed -Ee 's@foo@bar@'

^ - 所有这些都是等价的。

另一种选择是将所有/转义为\/,但这会变得噩梦般快。更喜欢选择一个不会与您尝试用于其他内容的字符发生碰撞的分隔符。