【发布时间】:2016-11-29 17:59:07
【问题描述】:
给定:
<tagA/>
<tagB>...</tagB>
<setOfFoo>
<foo>...</foo>
<foo>
...some special content...
</foo>
<foo>...</foo>
<foo>...</foo>
</setOfFoo>
<tagN/>
我想删除 foo 的整个节点,只有当它有一些特定的内容时,我正在尝试类似:
sed '/<foo>/,/special content/d;/special content/,/<\/foo>/d'
# or
sed '/<foo>/,/<\/foo>/{1,/special content/d;/special content/,$d}'
# or
sed '/<foo>/,/<\/foo>/{:a;N;ba;/special content/d}'
但这些都不起作用,有什么想法吗?
记住:其他foo标签不应该被删除。
【问题讨论】:
-
使用 XML/HTML 解析器(xmllint、xmlstarlet ...)。
标签: regex xml text replace sed