我想從我的扁平化的XML文件中刪除一個節點,我的XML文件包含以下內容的XML文件:刪除節點與sed的
...
<cellule ref="1111"/>
</blah>
<workdocument id="bar" classement="1"/>
<tablau id="35">
<cellule ref="1250"/>
<area id="foo">
<subarea>Ipsum Lorem Dolor</subarea>
<area>
...
我需要刪除<workdocument id="bar" classement="1"/>
,所以從元素<workdocument
直到正在關閉 「/>
」
我試着用SED如下:
echo '<cellule ref="1111"/></blah><workdocument id="bar" classement="1"/><tablau id="35"><cellule ref="1250"/><area id="foo"><subarea>Ipsum Lorem Dolor</subarea><area>' |sed 's/<workdocument.*\/>//'
<cellule ref="1111"/></blah><area id="foo"><subarea>Ipsum Lorem Dolor</subarea><area>
但<cellule ref="1250"/><area id="foo">
也將被刪除:/
請注意,屬性classement的價值是不知道:/
謝謝
使用sed或類似工具處理XML(或其他結構化數據)通常不是一個好主意。你的輸入仍然是有效的XML嗎?您可能希望查看XML處理工具,如xmlstarlet。在這種情況下:'xmlstarlet ed -d // workdocument file.xml' – Wintermute
嗨,謝謝,是的,它仍然有效,爲什麼我試圖使用sed反而是因爲我將在bash腳本中使用它,而我不確定xmlstarlet是否安裝在所有機器上。 – Zatla00
捆綁它,這是我的建議。或者依賴於像python這樣的東西,它無處不在,並且在其標準庫中有XML處理。使用sed處理XML的問題是,突然輸入是有效的XML是不夠的,它必須是XML,它的格式可以通過腳本可以處理的方式進行。例如,如果我在'
Wintermute