【发布时间】:2016-04-29 13:07:45
【问题描述】:
我有以下 XML:
<xml>
<bean id="bean1"
class="class1"
singleton="false">
<property name="dbPoolName" value="pool"/>
<property name="dirName" value="myDir"/>
<!-- <property name="MyProperty" value="5000"/> -->
</bean>
<bean id="bean2"
class="class2"
singleton="false">
<property name="dbPoolName" value="pool"/>
<property name="dirName" value="myDir"/>
<!-- <property name="MyProperty" value="5000"/> -->
</bean>
<bean id="bean3"
class="class3"
singleton="false">
<property name="dbPoolName" value="pool"/>
<property name="dirName" value="myDir"/>
<!-- <property name="MyProperty" value="5000"/> -->
</bean>
</xml>
我需要取消注释元素:
<!-- <property name="MyProperty" value="5000"/> -->
仅在 id 为“bean3”的 bean 内。然后我需要修改它的值,让它变成 50 而不是 5000。
我尝试过使用以下命令:
grep -A 4 "bean3" file.xml | sed 's/<!--//' | sed 's/-->//' | sed 's/5000/50/'
但我无法在文件中替换它。
我应该使用 sed 和/或 grep 吗?
【问题讨论】:
-
grep将仅提取与模式匹配的行。其余的被删除。在这种情况下,您也希望保留所有其他行。但是您只想用id="bean3"修改bean标签的限制使事情变得复杂。我建议使用实际解析 XML 的东西,但它可能无法获取 cmets。