Я включил 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» в вашем текущем каталоге.
Редактировать: окончательное решение (по крайней мере, достаточно хорошее, чтобы автор мог изменить его по своему вкусу) можно найти в комментариях.