タグを含む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
出力の最後の行の末尾に改行文字があることを保証します。
一部のシステムでは、XMLStarletxmlstarlet
が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:
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.*'
xmllint
AFAIK、スイッチなしで使用することが限界です--shell