2012-06-18 154 views
1

我想取消註釋這兩個聲明的每個條件之一:SED替代命令

#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

您應該將您的delimeters更改爲sed命令。您的分隔符是'/',它也會出現在您的模式中,並且出現錯誤。試試這個:

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

這裏g是代表全局的,s代替的。您可以使用任何其他分隔符不會出現在您的模式中,在示例中我使用冒號':'

0

您需要使用反斜槓轉義斜槓字符或使用另一個字符作爲「s」ubstitute命令的分隔符(由sleeping_dragon指出)
考慮到這一點:

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

使得圓括號需要查找您需要取消對確切的字符串作爲唯一的正則表達式。