Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 过滤块_Linux_Bash_Shell_Xml Parsing - Fatal编程技术网

Linux 过滤块

Linux 过滤块,linux,bash,shell,xml-parsing,Linux,Bash,Shell,Xml Parsing,我有以下模式的多个块 <APPLIANCE> <ID>12233</ID> <UUID>xxxx-xxxx-xxxx-xxxx-xxxxxxx</UUID> <NAME>xxxxxxx</NAME> <STATUS>Offline</STATUS> </APPLIANCE> <APPLIANCE>

我有以下模式的多个块

<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>

12233
xxxx-xxxx-xxxx-xxxx-xxxxxxx
xxxxxxx
离线
12234
xxxx-xxxx-xxxx-xxxx-xxxxxxx
YYYY
离线
我想提取一个具有特定ID和特定名称的块。 应该显示输出

例如:-

<ID>12234</ID>
<NAME>yyyyy</NAME>
12234
YYYY
我想用grep,sed,awk


谢谢。

此sed适用于您:

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

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

此sed应该适合您:

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

但是您最好使用xml解析器作为或来解析有效的xml文件。

有人能解释为什么
{//p}
只打印范围的开始和结束部分
/12234/,//
?我想//会重复上一个匹配,我认为这是整个范围。@marli
/
与上一个地址匹配相同的模式,或者在这种情况下,匹配范围中每个地址的模式。要打印整个范围,只需删除
/
。有人能解释一下为什么
{//p}
只打印范围的开头和结尾
/12234/,//
?我想//会重复上一个匹配,我认为这是整个范围。@marli
/
与上一个地址匹配相同的模式,或者在这种情况下,匹配范围中每个地址的模式。要打印整个范围,只需删除
/