xmllint 및 xpath를 사용하여 일치하는 속성 값 목록을 얻는 방법은 무엇입니까?

xmllint 및 xpath를 사용하여 일치하는 속성 값 목록을 얻는 방법은 무엇입니까?

구성 파일에서 Solr 코어의 이름을 구문 분석하기 위해 xmllint를 사용하려고 합니다. 이것은 작동합니다:

xmllint --xpath /solr/cores/core/@name solr.xml |grep -Po '(?<=name=")[a-z-]+(?=")'

다음과 같은 결과가 반환됩니다.

core-a
core-b
...

이것이 바로 내가 원하는 것이지만 grep을 제거하고 싶습니다. xpath만 사용하면 이 작업을 수행할 수 있는 것 같습니다. grep이 없으면 출력은 다음과 같습니다.

name="core-a" name="core-b" ...

표현식을 래핑하면 string()여러 출력이 첫 번째 출력(즉, core-a더 이상 없음)으로 줄어들어 쓸모가 없습니다. string각 결과에 함수를 어떻게 적용할 수 있나요 ?

답변1

AFAIK, xmllint꽤 제한적입니다. 하지만 당신은 사용할 수 있습니다xmlstarlet해당 sel명령을 사용하여 원하는 작업을 수행하세요. xmlstarlet sel --help사용법과 예시를 확인하세요 . 귀하의 예에서는 다음과 같습니다.

xmlstarlet sel -T -t -m /solr/cores/core/@name -v . -n solr.xml

관련 정보