【发布时间】:2021-04-18 12:09:45
【问题描述】:
我正在尝试解析一个结构类似于 XML 的 .conf 文件(我知道...)。每个标签在 xml 文件中都是唯一的。示例配置可能如下所示(请注意,一个 arg 可以有多个用逗号分隔的值):
<?xml version="1.0" encoding="..."?>
<conf>
<id>123</id>
<args>arg1=value1 arg2=value21,value22 arg3=value3 ...</args>
<someotherstuff>abc</someotherstuff>
<labels>label1,label2</labels>
<someotherstuff2>def</someotherstuff2>
</conf>
我想做的事:
如果该文件的labels 包含label2,我想遍历包含所有配置(非递归)的文件夹并打印<args> 的值。如果文件不包含标签,则可以跳过。 AIX 是使用的操作系统。
我的尝试:
没有安装 XML 解析器,也无法安装。 grep 已安装,但除非我严重错误,否则它无法完成此任务。因此,我一直在查找有关 awk 和 sed 的信息。
find . -type f -name "*.conf" -exec sed -n -e '/<args>/,/<\/labels>/d; p' {} +;
...是我发现的。具有讽刺意味的是,这不会返回从argsopening 标记到labels 结束标记的范围,而是文件中的所有其他内容。有人可以给我一个提示吗?然后,我计划通过 1p;$p 简单地打印第一行 (=args) 和最后一行 (=labels)。
提前谢谢你。
【问题讨论】:
标签: bash awk sed xml-parsing aix