2017-02-01 9 views
0

ログファイルの解析にsedを使用して、テンプレートを使用してxmlメッセージを抽出しようとしています。すべてのxmlメッセージを新しいファイルに入れたい私はこのような結果を得るために期待していlinuxでsedを使ってログファイルを解析する

WARNING: Exchange[ExchangePattern: InOut, BodyType: byte[], Body: <?xml version="1.0" encoding="utf-8" standalone="yes"?><sending><query>  <describe>   <data>city</data>  </describe> </query></sending>] 
Sep 26, 2016 11:54:30 AM org.apache.camel.util.CamelLogger log 
WARNING: Exchange[ExchangePattern: InOut, BodyType: byte[], Body: <?xml version="1.0" encoding="utf-8" standalone="yes"?><sending> <query>  <key_info/> </query></sending>] 

私はсontent次いるinput.outこのコマンドsed 's/<sending>\(.*\)<\/sending>/\1/' input.out>output.xml

を使用してい

<query>  <describe>   <data>city</data>  </describe> </query> <query>  <key_info/> </query> 

をしかし、私は取得のみ<sending></sending>の要素を除いたソースファイル

WARNING: Exchange[ExchangePattern: InOut, BodyType: byte[], Body: <?xml version="1.0" encoding="utf-8" standalone="yes"?><query>  <describe>   <data>city</data>  </describe> </query>] 
Sep 26, 2016 11:54:30 AM org.apache.camel.util.CamelLogger log 
WARNING: Exchange[ExchangePattern: InOut, BodyType: byte[], Body: <?xml version="1.0" encoding="utf-8" standalone="yes"?> <query>  <key_info/> </query>] 

申し訳ありません、私の英語のために、良い一日を。ご協力ありがとうございます。

+0

「grep -oP」\ \ K。 = \ <\/sending\>) 'filename' –

答えて

0
sed 's/.*<sending>\(.*\)<\/sending>.*/\1/' input.out>output.xml 

あなただけのパターンの内容を取り、あなたがが今

を送信する前か後にあなたが文字を含まないsedは、ライン(.*)の周囲の一部を除去に忘れます私はお勧めします

sed -e '/.*<sending>\(.*\)<\/sending>.*/!d' -e 's//\1/' input.out>output.xml 

それは送信ブロックを持っていない行を削除します。 sedが最長パートターを利用できることを忘れないでください。同じ行に2つのブロック(またはそれ以上)がある場合は、最初の送信から最後の/送信までを受け取ります。

+0

NeronLeVelu、ありがとう、私は問題を作り出す – Evgeny

関連する問題