Bash AIX:根据条件解析XML并将元素值打印到控制台

Bash AIX:根据条件解析XML并将元素值打印到控制台,bash,awk,sed,xml-parsing,aix,Bash,Awk,Sed,Xml Parsing,Aix,我试图解析一个类似XML的.conf文件(我知道…)。xml文件中的每个标记都是唯一的。示例配置可能如下所示(请注意,arg可以有多个用逗号分隔的值): …这就是我发现的。讽刺的是,这并没有返回从args开始标记到标签结束标记的范围,而是返回文件中的所有其他内容。有人能给我一个提示吗?然后,我计划通过执行1p简单地打印第一行(args)和最后一行(labels)$p 提前谢谢。试试: sed -En '/args/h;/labels/{/label2/{g;s/(^.*args>)(.*)

我试图解析一个类似XML的.conf文件(我知道…)。xml文件中的每个标记都是唯一的。示例配置可能如下所示(请注意,arg可以有多个用逗号分隔的值):

…这就是我发现的。讽刺的是,这并没有返回从
args
开始标记到
标签
结束标记的范围,而是返回文件中的所有其他内容。有人能给我一个提示吗?然后,我计划通过执行
1p简单地打印第一行(
args
)和最后一行(
labels
)$p

提前谢谢。

试试:

sed -En '/args/h;/labels/{/label2/{g;s/(^.*args>)(.*)(<\/args>$)/\2/p}}'
sed-En'/args/h/标签/{/label2/{g;s/(^.*args>)(.*)($)/\2/p}'
搜索带有“args”的行并添加到保留空间。然后搜索“标签”。如果有“labels2”,则将保留空间复制到图案空间,并将线条分为三部分,并仅用线条替换第二部分(值)。

尝试:

sed -En '/args/h;/labels/{/label2/{g;s/(^.*args>)(.*)(<\/args>$)/\2/p}}'
sed-En'/args/h/标签/{/label2/{g;s/(^.*args>)(.*)($)/\2/p}'

搜索带有“args”的行并添加到保留空间。然后搜索“标签”。如果有“labels2”,请将保留空间复制到图案空间,并将该行拆分为三个部分,然后将该行仅替换为第二部分(值)。

您可以尝试使用awk匹配args标记并保存该行,然后将其保存到标签行,然后匹配“label2”并打印args:

awk '/<args>/{ARGS=$0;}/<labels>/{LABELS=$0}END{if(LABELS ~ /label2/){print ARGS;}}'
awk'/{ARGS=$0;}/{LABELS=$0}END{if(LABELS~/label2/){print ARGS;}

您可以尝试使用awk匹配args标记并保存该行,然后将其保存到labels行,然后匹配“label2”并打印args:

awk '/<args>/{ARGS=$0;}/<labels>/{LABELS=$0}END{if(LABELS ~ /label2/){print ARGS;}}'
awk'/{ARGS=$0;}/{LABELS=$0}END{if(LABELS~/label2/){print ARGS;}

谢谢。与Raman Sailopal(我知道这是语言的本质)相比,它的简单性和更高的可读性被标记为解决方案。谢谢。与Raman Sailopal相比,它的简单性和更高的可读性被标记为解决方案(我知道这是语言的本质)。