背景
私は、特定のパターンに一致する行で始まるログを追跡するためにsedをたくさん使用します。その例として、このログ行のために..私は(私の識別子は、注文番号とスレッド番号です後にそれらを使用してフィルタリングすることができるように、私は単純に先頭に追加識別子を持つ行をログコードでsedを複数行のパターンにマッチさせる方法
sed -ne '/pattern/ p' infile >outfile
:私は、このコマンドを使用します。 (私は7123
を注文する関連するすべてのログをフィルタリングしていた場合)
9/14/2017 10:19:58 AM::: ORD7123::TH41361::Failed Checkout
は順序7123スレッド41361.のために上記だから、sedコマンドで次のようになります。
sed -ne '/ORD7123/ p' infile >outfile
問題
シングルオーダー/スレッドの組み合わせのログがそうのような複数行にわたる場合、問題が起こる:
9/14/2017 10:19:58 AM::: ORD7123::TH41361::Failed Checking Out With Credit Card for # 3 times. Error: {
"order": "country is required",
"credit_card": "year is not a valid year"
}.
9/14/2017 10:19:59 AM::: ORD7123::TH41347::Successfully Got a something Solution
上記のsedコマンドを使用しては、私の出力は、この
9/14/2017 10:19:58 AM::: ORD7123::TH41361::Failed Checking Out With Credit Card for # 3 times. Error: {
9/14/2017 10:19:59 AM::: ORD7123::TH41347::Successfully Got a something Solution
のようになります。
提案/分析
私たちは(ログの作成を管理していた)以前にこの問題に直面していました。対処方法は、新しい行を/n
など。この場合、私は、ログの作成に対し多くのコントロールを持っていない、と
これは役に立ちますか? http://www.grymoire.com/Unix/Sed.html#toc-uh-51 – Jerinaw