타임스탬프를 기반으로 로그 파일 섹션을 잘라내는 빠른 스크립트

타임스탬프를 기반으로 로그 파일 섹션을 잘라내는 빠른 스크립트

나는 ~을 찾고 있다빠른 스크립트큰 mail.log를 구문 분석하고 해당 부분을 반환합니다.지정된 두 타임스탬프 사이. 내 모든 메일 서버에서 이를 실행하고 추가 분석을 위해 관련 로그 부분을 중앙 위치에 복사하도록 하고 싶습니다.

나는 bash에서 작동하지만 느린 것을 작성했습니다.

혹시 아는 사람 있나요이미 존재하는 모든 것이것을 달성하려면 - 아니면 Perl을 배우고 스스로 뭔가를 만들어야 합니까?

(아직 내가 원하는 시점에 도달하지 않았기 때문에 이것을 SO에 넣지 않습니다.쓰다모든 코드 - 다른 사람이 이미 사용하고 있는 코드를 찾고 있는 중입니다.)

답변1

나는 AWK를 좋아한다 :)

내 로그의 경우 다음 형식입니다.

Jul 14 12:49:10 xxxxxx sendmail[31337]: ...........

나는 다음을 사용할 것이다:

awk '$3 >= "12:00:00" && $3 <= "13:00:00" {print;}' < /var/log/maillog

예를 들어 로그를 일별로 분할하지 않는 경우 필요에 따라 이를 조정할 수 있을 것입니다.

보너스:

제가 즐겨 사용하는 Apache 형식은 다음과 같습니다.

xxx.xxx.xxx.xxx - - [01/Jul/2009:03:06:24 -0400] "GET /favicon.ico HTTP/1.1" 200 3638
awk '$4 >= "[01/Jul/2009:03:00:00" && $4 <= "[01/Jul/2009:04:00:00" {print;}' < access_log

답변2

특정 날짜 범위에 대해 인쇄 > 출력 파일

(위 답변에 댓글을 달 수 없습니다. 그렇지 않으면 그렇게했을 것입니다)

HTH

awk '$2 >= "21" && $3 >= "09:00:00" && $2 >= "21" && $3 <= "11:00:10" {print > "m_range.log";}' < /var/log/m.log

cat m_range.log 
...
Nov 21 09:00:17 mail postfix/qmgr[1694]: 1C50D276524A: from=<[email protected]>, size=2378, nrcpt=1 (queue active)
...

관련 정보