我有一个结构类似的文件:
<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或约翰,它会检索所有存在这些值的日志条目。所以如果我找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 - 使用Shell脚本在XML中搜索字符串或数字时获取父标记,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48996715/