ログエントリからXMLを抽出する方法は?

ログエントリからXMLを抽出する方法は?

XMLメッセージをログにダウンストリームシステムに書き込みます。

ログエントリからXMLを抽出しようとしていますが、sed使用方法がわかりません。

以下は一般的なログエントリです。

2018-02-20T10:02:51.395Z|hostname1|user1||Application Name||10062|DEBUG|o.s.i.channel.DirectChannel||postSend (sent=true) on channel 'logger', message: GenericMessage [payload=<?xml version="1.0" encoding="UTF-8" standalone="yes"?><canonMessage xmlns="somenamespace">...the message body...</canonMessage>, headers={quote_format=FpML, id=f572ea65-91dd-a610-7976-5a1e97c16524, quote_message_id=b640bd90-1624-11e8-a904-bd3c0f5af83b_1519120971176, quote_data=Quote Rep, quote_transaction_originator=user1, timestamp=1519120971394}]

XMLからログエントリの先頭と末尾を削除する方法は?

sed上記の行の出力は次のようになります。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><canonMessage xmlns="somenamespace">...the message body...</canonMessage>

ベストアンサー1

grep -o '<?xml.*</canonMessage>' /path/to/logこれで問題が解決します。

-oオプションが教えてgrepくれるただ指定された正規表現に一致するデータを出力します。幸いなことに、あなたはただ話をするためにここに来ました抜粋(一部)XMLではない分析するそれ。

おすすめ記事