一重引用符で囲まれた文字列を取得する

一重引用符で囲まれた文字列を取得する
<source file='/home/anpham/Projects/vm-builder/30G'/>

上記の出力から絶対パスを抽出するためにsedコマンドを使用してみましたが、出力から文字列が切り捨てられません。次のコマンドは私の試みです。

virsh dumpxml --domain "test1" | grep 'source file' | head -1 | sed '/^<source$/d' 

出力はまだ次のようになります。

<source file='/home/anpham/Projects/vm-builder/30G'/>

ベストアンサー1

fileXML文書内のすべてのノードのすべての属性値を抽出するには、以下を使用できます。sourcexmlstarlet

xmlstarlet sel -t -v '//source/@file' -nl file.xml

または、次のvirshコマンドを読んでください。

virsh dumpxml --domain "test1" | xmlstarlet sel -t -v '//source/@file' -nl

パイプラインの問題は、最後のコマンドが正しい文字列(他の文字列を除く)を含むすべての行をsed削除しようとしていることです。<sourceあなたの入力にはそのような行はありませんsed

おすすめ記事