Shell
如何使用 xmllint 和 xpath 獲取匹配屬性的值列表?
我正在嘗試使用 xmllint 從配置文件中解析 Solr 核心的名稱。這有效:
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
函式應用於每個結果?
AFAIK,
xmllint
相當有限。但是你可以使用xmlstarlet
它的sel
命令來做你想做的事情。有關xmlstarlet sel --help
用法和範例,請參閱。以您的範例為例,它將是:xmlstarlet sel -T -t -m /solr/cores/core/@name -v . -n solr.xml