Linuxログから重複エントリを削除する方法

Linuxログから重複エントリを削除する方法

私はmysql一般ログを開き、先週に発生したすべての取引を記録しました。また、5分ごとに実行され、いくつかのmysqlトランザクションを実行するcronjobがあり、これは私のログを汚染します。よりきれいに見えるように、ログからこれらのエントリを削除する方法を知りたいです。

cronの重複エントリは次のとおりです。

160614 16:45:01    36 Connect   user@localhost on 
                   36 Init DB   db1
                   36 Query     SELECT FROM status_history as sh INNER JOIN (SELECT work_order_i
d, MAX(status_changed) AS MaxDateTime FROM status_history GROUP BY work_order_id) as groupedsh ON sh.work_order_id = groupedsh.work_o

                            JOIN rchetype_work_order_views AS wov ON wo.id = wov.work_order_id
                                WHERE wov.viewed = 0 AND sh.status_id IN (SELECT status_id FROM rchetype_status_completed)
                   36 Quit

sedを使うつもりですが、問題は、最初の行に明らかに別の日付とは異なるトランザクション番号(この場合は36)があり、最後に最初のQuitが見つかるまですべての行を削除したいということです。それで、これを行う方法があるかどうか疑問に思います。私はアイデアを探しているだけです。

ベストアンサー1

常に同じ数の行があると仮定すると、次のことができます。これにより、現在のディレクトリの "log.file"ファイルから
sed '/Connect\s*user@localhost on/,+7d' log.file 次の7行を含む行が削除されます。Connect user@localhost on

編集:最終的な解決策(少なくともOPが必要に応じて変更できるだけで十分です)はコメントにあります。

おすすめ記事