구성 파일에서 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