我需要查找並替換特定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