如何用linux shell注释掉一个spring xml?

时间:2016-04-26 06:32:48

标签: xml linux shell xml-parsing

我有一个spring.xml,我想要注释掉一个拦截器,我应该使用什么shell脚本来注释掉这个配置?换句话说,我应该如何在特定行之前添加一行,例如第70行。谢谢!

 70         <mvc:interceptor>
 71             <mvc:mapping path="/openapi/**"/>
 72             <bean parent="paramsEncryptInterceptor"/>
 73         </mvc:interceptor>

 70         <!--
 71         <mvc:interceptor>
 72             <mvc:mapping path="/openapi/**"/>
 73             <bean parent="paramsEncryptInterceptor"/>
 74         </mvc:interceptor>
 75         -->

解决方案 我通过将注释字符串插入特定的行来完成,如bellow:

sed -i '70i<!--' spring.xml
sed -i '75i-->' spring.xml

谢谢!

3 个答案:

答案 0 :(得分:0)

这对你有用吗?

sed 's/\(<mvc:interceptor\)/<!--\n\1/;s|\(</mvc:interceptor>\)|\1\n-->|' yourfile.xml

答案 1 :(得分:0)

我建议你试试Vim编辑器

  

vi yourfile.xml

答案 2 :(得分:0)

您可以在没有反向引用的情况下尝试以下操作:

$ sed -e '/<mvc:interceptor>/s/^/<!--\n/' \
-e '/<\/mvc:interceptor>/s/$/\n-->/' filename

示例输入

$ cat dat/stuff.txt
<mvc:interceptor>
    <mvc:mapping path="/openapi/**"/>
    <bean parent="paramsEncryptInterceptor"/>
</mvc:interceptor>

示例使用/输出

$ sed -e '/<mvc:interceptor>/s/^/<!--\n/' \
-e '/<\/mvc:interceptor>/s/$/\n-->/' dat/stuff.txt
<!--
<mvc:interceptor>
    <mvc:mapping path="/openapi/**"/>
    <bean parent="paramsEncryptInterceptor"/>
</mvc:interceptor>
-->