我有一个结构与此类似的文件:
<log id="1" date="11/11/1999">
<data>
<param id="1" value="30">
<param id="2" value="John">
<param id="3" value="Success">
</data>
</log>
<log id="2" date="11/12/1999">
<data>
<param id="1" value="20">
<param id="2" value="Albert">
<param id="3" value="Failure">
</data>
</log>
我一直在尝试使用 grep
或 xmllint
来仅显示提供特定值(即 30)的日志标记。我的想法是,通过搜索数字 30 或 John,它会检索这些值存在的整个日志条目。因此,如果我搜索 30,它将返回:
<log id="1" date="11/11/1999">
<data>
<param id="1" value="30">
<param id="2" value="John">
<param id="3" value="Success">
</data>
</log>
最好的方法是什么?
提前致谢。
最佳答案
您可以使用xpath
查询特定节点
xpath -e '//param[@value="30"]/../..'
这将返回参数值为 30 的节点的父级的父级
关于xml - 使用 shellscript 在 XML 中搜索字符串或数字时获取父标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48996715/