1

我正在尝试使 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
4

1 回答 1

4

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

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!
于 2013-11-01T14:47:30.690 回答