特定のタグのxmlファイル内の2つの範囲の間の値を見つける

特定のタグのxmlファイル内の2つの範囲の間の値を見つける

タグを含む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 の値のリストが返されます。これらの値は、file.xml表示される場所に関係なく、XML文書のノード値から取得されます。ゼロパディングされた数字が正しく処理されているようです。 final at は、-nl出力の最後の行の末尾に改行文字があることを保証します。

一部のシステムでは、XMLStarletxmlstarletxml

例:

$ 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

関連情報