構成ファイル内の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