すべてのXMLタグと値の抽出

すべてのXMLタグと値の抽出

私は次のような長い行を持っています:

<hdr><name><first>John</first><mid></mid><last>Smith</last></name><dob>04181995</dob><phone>5550001111<phone></hdr>

次のコンテンツをどのように抽出できますか?

<first>John</first>
<mid></mid>
<last>Smith</last>
<dob>04181995</dob>
<phone>5550001111<phone>

sedを試しましたが、追加のタグがあります。

echo "<hdr><name><first>John</first><mid></mid><last>Smith</last></name><dob>04181995</dob><phone>5550001111<phone></hdr>" | sed -e 's/></>\n</g'

<hdr>
<name>
<first>John</first>
<mid>
</mid>
<last>Smith</last>
</name>
<dob>04181995</dob>
<phone>5550001111<phone>
</hdr>

おそらくgrepがそれをすることができます。わかりません。助けてください

ベストアンサー1

XMLパーサー(xmllintXPathなど)を使用して、必要なノードを参照して選択しようとしています。

echo "<hdr><name><first>John</first><mid></mid><last>Smith</last></name><dob>04181995</dob><phone>5550001111</phone></hdr>" \
| xmllint --xpath 'hdr/name/* | hdr/dob | hdr/phone' -

おすすめ記事