Linuxログの重複エントリを削除するにはどうすればいいですか

Linuxログの重複エントリを削除するにはどうすればいいですか

私は MySQL の一般ログをオンにして、過去 1 週間に発生したすべてのトランザクションをログに記録しています。また、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 が好みに合わせて変更できるほど十分なもの) はコメントに記載されています。

関連情報