xml - 使用 shellscript 在 XML 中搜索字符串或数字时获取父标记

标签 xml linux bash shell parsing

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

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

相关文章:

linux - 使用 sudo 权限在当前 shell 中执行 shell 脚本

python - 这是 linux 还是 virtualenv 错误?

linux - shell脚本中调用函数

java - 微调器不显示所选项目

java - Android 模块引用布局错误

c# - xml写入错误 : "error on line 3 at column 1: Extra content at the end of the document"

java - 在dispatcher-servlet.xml中添加了 "mvc:resources"标签来添加js和css,它给出了HTTP Status 404

linux - 错误 : Failed to synchronize cache for repo 'updates'

regex - 使用 sed 和 awk 编辑文件中的行

bash - 使用 grep (在 shell 脚本中)每次匹配仅显示一个文件