使用 shell 脚本在 XML 中搜索字符串或数字时获取父标记

2024-02-05

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

<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 or xmllint以显示only提供特定值(即 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 的节点的父级的父级

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 shell 脚本在 XML 中搜索字符串或数字时获取父标记 的相关文章

  • Bash:读入多个局部范围变量

    根据这个答案 https stackoverflow com a 1952480 582917 https stackoverflow com a 1952480 582917 我可以读入并因此分配多个变量 但是我希望这些变量是 bash
  • 检查已安装的软件包,如果没有找到则安装

    我需要检查已安装的软件包 如果未安装则安装它们 RHEL CentOS Fedora 示例 rpm qa grep glibc static glibc static 2 12 1 80 el6 3 5 i686 如何在 BASH 中进行检
  • 为使用 SSH.NET SshClient.CreateShellStream 执行的命令 (sudo/su) 提供子命令

    我正在尝试使用 Renci SSH NET 从 C Web 应用程序连接到远程 Linux 服务器并执行 shell 脚本 我想一个接一个地运行脚本 但不知道如何运行脚本并读取输出并将其存储在标签中 我已经尝试了下面的代码 但无法一行接一行
  • 设置 git 别名,但调用它会给出“找不到命令”

    我想在 git 中设置一个别名来计算存储库中的总行数 因此我进入 Git Bash 并输入以下内容 git config global alias linecount ls files z xargs 0 wc l 我输入命令后 没有出现错
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • 使用 C# 读取 Soap 消息

  • ansible unarchive 模块如何查找 tar 二进制文件?

    我正在尝试执行一个 ansible 剧本 该剧本的任务是利用unarchive模块 因为我是在 OSX 上执行此操作 所以我需要使用它gnu tar 而不是bsd tar通常与 OSX 一起提供 因为BSD tar 不受官方支持 https
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser
  • Python 解析 XML 提要错误:XPathEvalError:未定义的命名空间前缀

    我正在尝试处理 XML 文件 但收到此错误 XPathEvalError Undefined namespace prefix 在这一行中 print category item xpath g google product categor
  • 使用 TSQL 选择 XML 节点

    我的 SQL Server 2008 数据库表有一个 XML 字段 我想从该字段以及其他字段中选择节点 例如 考虑下表 DECLARE TestTable AS TABLE Id VARCHAR 20 Name XML INSERT INT
  • [A-Z] 表示 [A-Za-z] 是怎么回事?

    我已经注意到 至少在我使用的一些基于 Unix 的系统上 ls A Z 已经给了我预期的结果ls A Za z 让我无法轻松获得以大写字母开头的该死的文件列表 我刚刚遇到了同样的事情grep 我无法让它停止与小写字母匹配 A Z 直到我最终
  • 使用简单数据结构在 Bash 脚本中进行深度优先搜索

    我正在尝试按照上面所述进行操作 我相对容易地设计了广度优先搜索 该脚本的目标是创建用户输入的具有一定深度和广度的目录结构 我正在尝试改变广度优先实现以支持深度优先搜索 这是我得到的 depthsearch local open seed l
  • 如何在shell脚本中给出密码?

    在 shell 脚本文件中 我使用一些命令 例如scp and make install要求我输入密码 我运行一个 shell 脚本来编译一个大项目 一段时间后它会要求我输入密码才能使用scp 我需要等待该过程并在此之后提供密码 我只想通过
  • XSL 和命名空间

    这可能是一个非常简单的问题 但我似乎无法理解这个问题 并且我正在抓狂 我有以下 XML
  • 为 OpenWrt 编写和编译程序

    我有一个在 OpenWRT 下运行的具有 MIPS 架构的嵌入式设备 系统类型 MediaTek MT7628AN ver 1 eco 2机器 WRTnode2P 处理器 0CPU型号 MIPS 24KEc V5 5 我想通过我的电脑 ub
  • 从核心转储中获取堆栈跟踪

    如何从核心转储文件中获取堆栈跟踪 该文件大约 14 mb 是在我的应用程序退出并显示 分段错误 后生成的 我使用的是红帽 5 5 gdb usr bin myapp binary corefile 然后 使用以下之一 gdb bt gdb
  • 如何在Linux中自动启动需要X的应用程序

    我试图在系统进入运行级别 5 时自动启动 X 应用程序 这样做的正确方法是什么 我写了一个脚本并将其放在 etc init d 中 我已运行适当的 chkconfig 命令来设置 etc rcX d 目录中的符号链接 一切工作正常 除了当我
  • 如何找到进程启动时使用的原始用户名?

    有一个 perl 脚本需要以 root 身份运行 但我们必须确保运行该脚本的用户最初没有以用户 foo 身份登录 因为它将在脚本运行期间被删除 那么 我如何查明自登录以来可能已多次起诉的用户是否在该链中的任何时间都没有模拟过 foo 我发现
  • 如何使用 sed 从输出字符串中(仅)提取 Nginx 版本号? [复制]

    这个问题在这里已经有答案了 我陷入了一个奇怪的情况 我试图用 sed 提取 nginx 的版本 但它不起作用 只有字符串版本有效 root hostname echo nginx v sed n s nginx version nginx
  • 独立值不会出现在 moxy - jaxb 生成的 xml 中

    我有一个使用 jaxb 的 moxy 实现生成的 xml 文件 但是独立值不会出现在 xml 文档中 Note 我是EclipseLink JAXB MOXy http www eclipse org eclipselink moxy ph

随机推荐