我想根据条件取消注释这两个语句中的一个:
#export CATALINA_OPTS="-javaagent:$TOMCAT_INSTALL_LOCATION/$APACHE_TOMCAT_VERSION/lib/oi-mule-libs/usage/injector.jar"
#export CATALINA_OPTS="-javaagent:$TOMCAT_INSTALL_LOCATION/$APACHE_TOMCAT_VERSION/lib/agents/cl-proxy-agent.jar"
我使用了以下sed命令:
#sed -i 's/#export CATALINA_OPTS="-javaagent:$TOMCAT_INSTALL_LOCATION/$APACHE_TOMCAT_VERSION/lib/oi-mule-libs/usage/injector.jar"/export CATALINA_OPTS="-javaagent:$TOMCAT_INSTALL_LOCATION/$APACHE_TOMCAT_VERSION/lib/oi-mule-libs/usage/injector.jar"/' $TOMCAT_HOME/bin/init-script.sh
我收到了以下错误:
sed: -e expression #1, char 85: unknown option to `s'
为什么我收到此错误?
如何通过修改上述命令来实现我的目的?
答案 0 :(得分:0)
您应该将分隔符更改为sed命令。您的分隔符是'/',它也会在您的模式中出现,并且会出错。试试这个:
sed 's:<pattern to be replaced>:<replacement pattern>:g'
这里g代表全局,s代表替代。您可以使用未出现在模式中的任何其他分隔符,我在示例中使用了冒号':'
答案 1 :(得分:0)
你需要使用反斜杠转义斜杠字符或使用另一个字符作为“s”ubstitute命令的分隔符(如sleep_dragon所指出的)
考虑到这一点:
sed -e s/^#(.*\/injector.jar.*)/\1/ -e s/^#(.*\/cl-proxy-agent.jar.*)/\1/ $my_file
使圆括号中的正则表达式根据需要唯一,以标识您需要取消注释的确切字符串。