Linux 로그에서 중복 항목을 제거하는 방법

Linux 로그에서 중복 항목을 제거하는 방법

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

관련 정보