我需要查找并替换特定xml元素的值。的条件如下:使用sed查找并替换为xml文件
- 元件的值使能必须从改为;
- 启用必须是somenode元素的子
我测试的XML看起来是这样的:
<somenode name="node1">
<some></some>
<enabled>0</enabled>
<some></some>
</somenode>
<someothernode name="node2">
<some></some>
<enabled>0</enabled>
<some></some>
</someothernode>
<somenode name="node3">
<some></some>
<enabled>0</enabled>
<some></some>
</somenode>
我想到的是第一和第三启用内容将被改变。到目前为止,我已经成功地写这个sed命令:
sed -n "1h;1!H;${;g;s|\(<somenode [^>]*>\)\(.*\)\(<enabled>\s*\)0\(\s*</enabled>\)\(.*</somenode>\)|\1\2\3 1 \4\5|g;p;}" test.xml
,但它改变了只有最后一个,我相信这是由于贪婪匹配。 任何帮助,将不胜感激。
我想用XML解析库(Perl,Python,PHP,Ruby)的任何动态语言都比sed更适合这个任务,你使用螺丝刀吃汤的任何特定原因? – 2009-11-25 06:23:51
看看http://stackoverflow.com/questions/91791/grep-and-sed-equivalent-for-xml-command-line-processing - 这里提到了很多工具。 – 2009-11-25 06:37:42