
나는 mysql 일반 로그온을 켜고 지난 주에 발생한 모든 트랜잭션을 기록해 왔습니다. 또한 내 로그를 오염시키는 일부 mysql 트랜잭션을 수행하면서 5분마다 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" 파일에서 다음 7개 행을
sed '/Connect\s*user@localhost on/,+7d' log.file
포함하는 행이 제거됩니다 .Connect user@localhost on
편집: 최종 솔루션(적어도 OP가 원하는 대로 변경할 수 있을 만큼 충분함)은 댓글에서 찾을 수 있습니다.