我有一个结构类似的文件:

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

我一直试图使用grepxmllint只显示提供特定值的日志标记(即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/

10-14 18:45
查看更多