我有一个 XML 格式的文件:
...
<element1>
<element2>
<group1>
<tag1>value</tag1>
<tag2>value</tag2>
</group1>
<group1>
<tag1>value</tag1>
<tag2>value</tag2>
</group1>
<element2>
...
我用了
sed -n '/\<group1\>/,\<\/group1>/p' filename
提取 group1 标记的所有内容,包括所有子项。这正是我想要的。
<group1>
<tag1>value</tag1>
<tag2>value</tag2>
</group1>
<group1>
<tag1>value</tag1>
<tag2>value</tag2>
</group1>
但是,如果输入 XML 的格式为
...
<element1>
<element2>
<group2>
<group2>value</group2>
<otherTag>value</otherTag>
</group2>
<element3>
<group2>
<group2>value</group2>
<otherTag>value</otherTag>
</group2>
...
我试图提取以下内容
<group2>
<group2>value</group2>
<otherTag>value</otherTag>
</group2>
<group2>
<group2>value</group2>
<otherTag>value</otherTag>
</group2>
上面的 sed 命令只返回:
<group2>
<group2>value</group2>
它理解停止模式</group2>
并且不再进行提取。我在这里很困惑。为什么不继续提取下一个<group2>
,<group1>
以防万一。有没有办法让它与 sed 一起工作?还有其他选择吗?