繁体   English   中英

使用具有/的局部变量的sed

[英]using sed with local variables that have /

我正在尝试使用sed命令替换这些:

CURRENT_TOMCAT=/opt/tomcat/lib
NEW_TOMCAT=/usr/tomcat/lib
sed -i "s/$CURRENT_TOMCAT/$NEW_TOMCAT/" tomcat.env 

我已经尝试了一堆没有成功的组合,有时将未知选项变为's'错误,有时没有错误,但没有做出任何更改

需要更改的行I看起来像这样:

TOMCAT_LIB=/opt/tomcat/lib; export TOMCAT_LIB

尝试将分隔符更改为不包含在字符串中的另一个分隔符。 例如, #

CURRENT_TOMCAT=/opt/tomcat/lib
NEW_TOMCAT=/usr/tomcat/lib
sed -i "s#$CURRENT_TOMCAT#$NEW_TOMCAT#" tomcat.env 
         ^               ^           ^

测试

$ cat a
hello/how are you?

$ old="hello/how"
$ new="bye/how"

$ sed "s/$old/$new/" a
sed: -e expression #1, char 13: unknown option to `s' <---- meeec

$ sed "s#$old#$new#" a
bye/how are you?                                      <---- successful!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM