안녕하세요, 제목에 표시된 솔루션을 찾고 있습니다.
날짜가 표시된 하나의 로그에서 특정 오류 메시지를 계산하는 방법을 알고 있지만 여러 로그에서 이 작업을 수행한 다음 오류 메시지가 가장 많이 발생하는 로그를 표시하는 방법을 찾는 데 어려움을 겪고 있습니다.
날짜가 표시된 단일 로그 파일의 경우, 예:
log1 = message.log.2022-01-07
log2 = message.log.2022-01-06
log3 = message.log.2022-01-05
log4 = message.log.2022-01-04
error message = ErrorCode123
통계 로그 1에서 오류 메시지 발생:
grep ErrorCode123 message.log.2022-01-07 | wc -l
하지만 4개의 로그 각각에서 이를 자동화하여 어느 로그의 수가 가장 높은지 표시하려면 어떻게 해야 합니까? 이상적으로는 동일한 명명 규칙에 따라 주어진 수의 로그(4개가 아닌)를 수용할 수 있도록 일종의 와일드카드를 사용하는 것이 좋습니다.message.log.*
이런 식으로 사용하는 것이 실용적이지 않다면 grep
다른 방법도 좋습니다.
답변1
역순으로 일치하는 항목 수:
grep -c ErrorCode123 message.log.* | awk -F':' '{print $2, $1}' | sort -nr
7 message.log.2022.01-05
4 message.log.2022.01-07
3 message.log.2022.01-06
상위 일치 항목만 반환: 추가| head -1
답변2
한 파일에 4개의 일치 항목이 포함되어 있고 다른 파일에는 더 적은 일치 항목이 포함되어 있다고 가정합니다.
$ grep -n ErrorCode123 message.log.* | sort -rt: -k2,2 | sort -ut: -k1,1 | sort -rt: -k2,2 | head -1
message.log.2022-01-04:4:ErrorCode123
이제 발생할 수 있는 문제는 일치하는 항목 수가 동일한 파일이 여러 개 있다는 것입니다.