태그 가 포함된 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
출력의 마지막 줄 끝에 개행 문자가 있음을 보장합니다.
일부 시스템에서는 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:
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