以下に示す文字列には、ANSI形式の日付(YYYY-MM-DD)の最初のインスタンスのみが必要です。
PosMntReq ReqId="XXXXX" TxnTyp="4" Actn="1" BizDt="2019-03-27" TxnTm="2019-03-27T10:41:13" AdjTyp="3" SetSesID="EOD">
awk を使用して作成したコマンドに日付は指定されません。
v_business_date=$(awk -F= 'NR==4 { print $5}' XMLCD02)
bash-4.2$ echo $v_business_date
"2019-03-27" TxnTm
日付のある行がファイルに複数回表示されます。その行の最初の項目が必要です。
ベストアンサー1
データについていくつかの仮定をしましょう。
$ cat file.xml
<root>
<node1>
<node2 ReqId="XXXXX" TxnTyp="4" Actn="1" BizDt="2019-03-27" TxnTm="2019-03-27T10:41:13" AdjTyp="3" SetSesID="EOD">
</node2>
</node1>
</root>
$ txn_tm=$( xmlstarlet sel -t -v '//node2/@TxnTm' file.xml )
$ echo "$txn_tm"
2019-03-27T10:41:13
ReqIdに基づいてノードを選択するには、xpathを調整する必要があります。指定された「ReqId」属性を持つすべてのノードの「TxnTm」属性値を返します。
xmlstarlet sel -t -v '//*[@ReqId = "XXXXX"]/@TxnTm' -n file.xml