Как удалить дубликаты записей в журнале Linux?

Как удалить дубликаты записей в журнале Linux?

Я включил mysql general log и регистрирую каждую транзакцию, которая происходит за последнюю неделю. У меня также есть cronjob, который каждые 5 минут выполняет некоторые mysql-транзакции, что загрязняет мой журнал. Я хотел бы узнать, как удалить эти записи из моего журнала, чтобы он выглядел более чистым.

Повторяющиеся записи из 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

Предполагая, что количество строк всегда одинаково, вы можете сделать что-то вроде этого:
sed '/Connect\s*user@localhost on/,+7d' log.file Это удалит строку, содержащую Connect user@localhost onи следующие 7 строк из файла «log.file» в вашем текущем каталоге.

Редактировать: окончательное решение (по крайней мере, достаточно хорошее, чтобы автор мог изменить его по своему вкусу) можно найти в комментариях.

Связанный контент