grep을 사용하여 여러 로그의 고유 오류를 필터링하는 방법은 무엇입니까?

grep을 사용하여 여러 로그의 고유 오류를 필터링하는 방법은 무엇입니까?

Ubuntu에서 다음 모드를 사용해 보았습니다.

grep -Eri "warning|error|critical|severe|fatal" --color=auto

/var/log 및 해당 하위 폴더에 있는 다양한 .log 파일에서 관련 오류를 반복적으로 찾습니다.

내가 겪고 있는 문제는 표현식이 실행될 때 수만 행의 일치 항목이 인쇄된다는 것입니다. 다음 방법 중 하나 이상을 사용하여 이를 필터링하고 싶습니다.

  1. 예를 들어 그 이상인 경우 인쇄하지만 일치를 건너뜁니다. 동일한 일치 항목이 3개 있습니다.
  2. 고유한 일치 항목만 표시(예: 찾은 각 줄 중 하나 인쇄)

출력을 다른 곳으로 파이프하여 이 작업을 수행할 수 있나요? 현재는 각 로그에 오류가 있는지 확인하는 데 시간이 많이 걸리기 때문에 이렇게 하려고 합니다. 그러나 내가 사용하고 있는 표현은 그 자체로는 사용할 수 없을 만큼 너무 많은 정보를 인쇄합니다. 파이프를 "적음"으로 설정하려고 시도했지만 강조 표시가 제거되어 읽기가 더 어려워지고 출력이 너무 커지는 문제가 해결되지 않습니다.

한 번에 특정 파일로 표현을 제한할 수도 있다는 것을 알고 있지만 앞서 언급했듯이 일부 로그는 일치 항목으로 가득 차 있는 반면 다른 로그에는 일치 항목이 거의 없습니다. 따라서 중복 항목을 추가로 필터링하는 것이 매우 도움이 될 것입니다.

다음은 제가 검색하고 있는 많은 로그 중 하나에 있는 오류 줄의 예입니다.

./artifactory/artifactory-service.log:20:2021-07-20T08:45:30.248Z [jfrt ] [ERROR] [.j.a.c.g.GrpcStreamObserver:97] [c-default-executor-1] - refreshing affected platform config stream - got an error

그러한 오류가 수백 개 있으면 예를 들어 보여주고 싶습니다. 다음 게임으로 넘어가기 전 최대 3개까지 가능합니다.

또는 날짜가 로그에 나열되는 방식으로 인해 발생합니다. 특정 날짜만 일치하도록 필터링하면 좋을 것 같습니다. 어떻게 해야 합니까? 날짜 필터링은 출력을 크게 제한합니다.

관련 정보