使用sed删除xml文件中的节点

时间:2016-11-26 22:59:44

标签: xml bash awk sed

我试图从我的展平xml文件中删除一个节点,我的xml文件包含以下内容:

...
<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移除,直到它关闭&#34; />&#34;

我用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的值未知:/

谢谢

1 个答案:

答案 0 :(得分:2)

试试这个:sed 's/<workdocument[^\/]*\/>//'

[^/]*之后使用.*代替workdocument,以使其匹配不超过第一个/>[^/]匹配/以外的所有字符。