查找一个特定标签的 xml 文件中两个范围之间的值

查找一个特定标签的 xml 文件中两个范围之间的值

我有 xml 文件,其中包含标签<a>0000123</a>, <a>1200000</a>, <a>0001000</a>

我只需要获取该特定标签应在 100 到 1000 之间的值。

答案1

使用XML小星:

xml sel -t -v '//a[. > 100 and . < 1000]' -nl file.xml

a这将返回 100 到 1000 之间的值列表。这些值将从中 XML 文档的节点值中获取file.xml,无论它们出现在何处。零填充数字似乎处理得当。最后的at-nl确保输出的最后一行末尾有换行符。

在某些系统上,XMLStarlet 安装为xmlstarlet而不是仅安装为xml.

例子:

$ cat file.xml
<?xml version="1.0"?>
<root>
  <a>0000123</a>
  <a>1200000</a>
  <a>0001000</a>
</root>

$ xml sel -t -v '//a[. > 100 and . < 1000]' -nl file.xml
0000123

答案2

:

xmllint --xpath '//a[text() > 100 and text() < 1000]/text()' file.xml

如果你想用换行符分隔:

xmllint --shell file.xml <<< 'xpath //a[text() > 100 and text() < 000]/text()' |
    grep -oP 'content=\K.*'

xmllintAFAIK,这是在没有开关的情况下使用的限制--shell

相关内容