答え1
使用XMLスター:
xmlstarlet sel -t -m '//APPLIANCE' -v 'concat(NAME/text()," ",STATUS/text())' -nl file.xml
与えられたデータに対して以下が生成される。
METASYNC Online
DELTA Offline
XML文書内のすべてのノードを見つけ、中間スペースを使用してAPPLIANCE
その値と子ノードを連結することによってNAME
これを行います。それぞれの結果を出力した後、末尾STATUS
に改行文字を挿入します。-nl
APPLIANCE
列ヘッダーとより良い表形式が必要な場合:
( echo 'Device_name Status'
xmlstarlet ...as above... ) | column -t
答え2
これを使って希望の出力を得ることができます
$ echo "DEVICE-NAME STATUS" ; grep -e NAME -e STATUS <filename> | sed 's#NAME##g ; s#STATUS##g ; s#<>## ; s#</>##' | xargs -L2 | column -t
出力:
DEVICE-NAME STATUS
METASYNC Online
DELTA OFFLINE