He activado el inicio de sesión general de MySQL y he estado registrando cada transacción que se produce durante la última semana. También tengo un cronjob ejecutándose cada 5 minutos realizando algunas transacciones de MySQL que están contaminando mi registro. Me gustaría saber cómo puedo eliminar esas entradas de mi registro para que luzca más limpio.
Las entradas repetitivas de cron se ven así:
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
Estaba pensando en usar sed pero el problema es que la primera línea obviamente tendrá una fecha diferente y un número de transacción diferente (en este caso 36) y me gustaría eliminar todas las líneas hasta que encuentre el primer Salir al final. Entonces me preguntaba si hay una manera de hacer esto. Sólo estoy buscando ideas.
Respuesta1
Suponiendo que siempre tienen la misma cantidad de líneas, podría hacer algo como esto:
sed '/Connect\s*user@localhost on/,+7d' log.file
Esto eliminará la línea que contiene Connect user@localhost on
y las siguientes 7 líneas del archivo "log.file" en su directorio actual.
Editar: la solución final (bueno, al menos lo suficientemente buena para que el OP la modifique a su gusto) se puede encontrar en los comentarios.