我有下面的XML:用sed替换字符串 - 只有在模式匹配
<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” 豆。然后,我需要修改它的价值,所以它是50,而不是5000
我曾尝试使用下面的命令尝试:
grep -A 4 "bean3" file.xml | sed 's/<!--//' | sed 's/-->//' | sed 's/5000/50/'
但我不能够取代它的文件。
我应该使用sed和/或grep吗?
'grep'将只提取符合模式的行。其余的被删除。在这种情况下,您还想保留所有其他行。但限制你只想用'id =“bean3”'修改'bean'标签使事情复杂化。我会建议使用真正解析XML的东西,但它可能不会收集评论。 – e0k
可能是http://stackoverflow.com/q/784745/7552的副本 –