나는 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가 원하는 대로 수정할 수 있을 만큼 충분함)은 댓글에서 찾을 수 있습니다.