나는 유닉스에서 일한다.
현재 날짜의 지정된 시간 범위 내의 로그에서 정보를 얻고 싶습니다. 예를 들어, 오늘 날짜 00:00부터 09:00까지의 로그 파일 데이터를 원합니다.
로그 항목 예시:
13/10/16 14:45:02 <batchspeedchange> <BELLBD.BD77350A.G6987V00> <> FAILED FILE FORMAT VALIDATION - ERROR:-213:rawData cannot contain tokens
이와 같은 로그 파일의 출력을 어떻게 얻을 수 있습니까?
답변1
표시할 때 날짜가 "HH:MM"과 같다고 가정하고 날짜가 두 번째 필드에 나타난다고 가정하면 awk를 사용할 수 있습니다.
awk -v start=00:00 -v stop=09:00 'start <= $2 && $2 < stop' file.log
[호언장담] 저는 날짜 형식에 대해 매우 까다롭습니다. 그런데 이건 형편없습니다. "09/10/11"은 무슨 요일인가요? [/노호]
어쨌든 "YY/MM/DD"라고 가정해 보겠습니다.
awk -v date="$(date +%y/%m/%d)" \
-v start=00:00:00 \
-v stop=09:00:00 \
-v search="File format not found" \
'$1 == date && start <= $2 && $2 < stop && $0 ~ search' file.log
답변2
로그 파일의 줄이 시간순으로 되어 있고 00:00과 00:09에 이벤트가 있다고 가정합니다.
awk '/^13\/10\/16 00:00/,/^13\/10\/16 09:00/ {print}' file.log
나는 위의 내용을 기억하기 쉽고 로그를 조사할 때 훌륭한 도구라고 생각합니다. 이러한 가정은 프로덕션 환경에서 사용하기에는 너무 광범위합니다.