首页 > 解决方案 > 用于获取 XML 结构中标记的最后出现的 Bash 命令

问题描述

我有以下示例 XML 结构:

<root>
<id>1</id>
<name>abc</name>
<id>2</id>
<name>def</name>
<id>3</id>
<name>ghi</name>
</root>

我正在尝试完成以下一项工作:

检索结构中最后一次出现的 id 标记的文本值。(在这种情况下应该输出 3)。

你能帮忙吗?

我曾尝试使用 sed 但无法将其输出 3。:D

标签: xmlbashshell

解决方案


您可以使用遍历 XML 文件或字符串的 xpath 查询。

例如:

xpath -q -e '//root/id[last()]/text()' file.xml

xpath

是接受查询和 XML 的可执行文件/命令。

-q 代表安静,这意味着您只能在标准输出中获得您所要求的内容。

-e 出现在查询字符串之前。

// 代表开始搜索的根。

last() 是你期望 -1 做的:)。

text() 只取值,不打印被标签包围的值。


推荐阅读