私は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が必要に応じて変更できるだけで十分です)はコメントにあります。