특정 태그에 대해 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 사이의 값 목록이 반환됩니다. 이러한 값은 file.xml나타나는 위치에 관계없이 XML 문서의 노드 값에서 가져옵니다 . 제로 패딩된 숫자가 제대로 처리되는 것 같습니다. final at은 -nl출력의 마지막 줄 끝에 개행 문자가 있음을 보장합니다.

일부 시스템에서는 XMLStarlet xmlstarletxml.

예:

$ 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

관련 정보