シェルスクリプトを使用してXML開始タグを終了タグに解析する方法は?

シェルスクリプトを使用してXML開始タグを終了タグに解析する方法は?

次のXMLファイルがありますsample.xml

<m:properties>
<d:>ABCD</d:>
<d:>1234</d:>
<d:>0048</d:>
<d:>0.0</d:>
</m:properties>
<m:properties>
<d:>EFGH</d:>
<d:>5678</d:>
<d:>1111</d:>
<d:>9.0</d:>
</m:properties>

希望の出力は次のとおりです。

ABCD,1234,0048,0.0
EFGH,5678,1111,9.0

誰でもスクリプトを書くのに役立ちますか?

答え1

XMLが名前付き単一のルートタグに含まれていると仮定すると、root同様の許容XMLパーサーを使用しますxqyqhttps://kislyuk.github.io/yq/)CSV生成:

xq -r '.root."m:properties"[]."d:" | @csv' sample.xml

そのような閉じるタグがない場合は、動的に追加できます。

{
  echo '<root>'
  cat sample.xml
  echo '</root>'
} | xq -r '.root."m:properties"[]."d:" | @csv'

結果:

"ABCD","1234","0048","0.0"
"EFGH","5678","1111","9.0"

関連情報