1

我想根据条件取消注释这两个语句之一:

#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'

为什么我会收到此错误?

我怎样才能通过修改上面的命令来达到我的目的?

4

2 回答 2

0

您应该将分隔符更改为 sed 命令。您的分隔符是“/”,它也出现在您的模式中,并且会产生错误。尝试这个:

sed 's:<pattern to be replaced>:<replacement pattern>:g'

这里 g 代表全局,s 代表替代。您可以使用任何其他未出现在您的模式中的分隔符,我在示例中使用了冒号“:”

于 2012-06-18T11:27:28.080 回答
0

您需要使用反斜杠转义斜杠字符或使用另一个字符作为“s”ubstitute 命令的分隔符(如 sleep_dragon 所指出的)
记住这一点:

 sed -e s/^#(.*\/injector.jar.*)/\1/ -e s/^#(.*\/cl-proxy-agent.jar.*)/\1/ $my_file

根据需要使圆括号中的正则表达式具有唯一性,以识别您需要取消注释的确切字符串。

于 2012-07-12T18:07:15.983 回答