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

おすすめ記事