过滤块

时间:2016-10-07 17:54:41

标签: linux bash shell xml-parsing

我有以下模式的多个块

<APPLIANCE>
        <ID>12233</ID>
        <UUID>xxxx-xxxx-xxxx-xxxx-xxxxxxx</UUID>
        <NAME>xxxxxxx</NAME>
        <STATUS>Offline</STATUS>
</APPLIANCE>
<APPLIANCE>
        <ID>12234</ID>
        <UUID>xxxx-xxxx-xxxx-xxxx-xxxxxxx</UUID>
        <NAME>yyyyy</NAME>
        <STATUS>Offline</STATUS>
</APPLIANCE>

我想提取具有特定ID和特定名称的块。 输出应显示

例如: -

<ID>12234</ID>
<NAME>yyyyy</NAME>

我想用grep,sed,awk

感谢。

1 个答案:

答案 0 :(得分:2)

这个sed应该适合你:

sed -n '/<ID>12234/,/<NAME>/{//p}' file

但您最好使用xml解析器xmllintxmlstarlet来解析有效的xml文件。