동일한 문자열이지만 여러 파일을 동시에 grep하는 방법은 무엇입니까? 문자열을 한 번에 검색하고 싶습니다. 이것이 가능합니까?

검토해야 할 로그 파일 세트가 있으며 동일한 파일에서 특정 문자열을 한 번에 검색하고 싶습니다. 이것이 가능합니까? 현재 사용하고 있습니다

grep -E 'fatal|error|critical|failure|warning|' /path_to_file

이것을 어떻게 사용하고 한 번에 여러 파일의 문자열을 검색합니까? 이것이 스크립트가 필요한 것이라면 누군가가 간단한 스크립트를 제공 할 수 있습니까?



답변

grep -E 'fatal|error|critical|failure|warning|' *.log


답변

다음과 같은 것을 사용할 수 있습니다.

find . -name "*.log" | xargs grep -E 'fatal|error|critical|failure|warning|'

.log확장명을 가진 모든 파일을 찾고 grep명령을 적용합니다 .


답변

더 간단하면 각 파일을 하나씩 지정할 수 있습니다.

grep -E 'fatal|error|critical|failure|warning' file1.log file2.log


답변

정규식으로 검색 할 수없는 임의의 파일 이름 세트를 grep해야하는 경우 :

grep -E 'fatal|error|critical|failure|warning|' `cat<<FIN
> file1
> file2
> ...
> filen
> FIN`

파일 이름을 하나씩 붙여 넣을 때의 장점은 무엇입니까? 파일 이름 목록을 텍스트 파일로 컴파일 한 후 붙여 넣을 수 있습니다.


답변

하위 디렉토리 파일에서도 재귀 적으로 검색하려면 아래 명령을 사용할 수 있습니다

하위 디렉토리 파일에서도 재귀 적으로 검색합니다.

egrep -r "string1|string2" pathname


답변

이것은 시간이 많이 걸리는 작업이었습니다. 그렇습니다. 동시에 여러 개의 다른 로그에서 여러 개의 문자열을 검색하려면 반드시 스크립트를 작성해야합니다. 그러나 나는 최근에 이것을해야했고 그것은 매우 고통 스럽습니다. 그럼에도 불구하고, 준비가 완료되었으며 다음 링크에서 다운로드 할 수 있습니다.

로그 검색 스크립트 다운로드

이것이 작동하는 방식은 매우 간단합니다.

시나리오 1 : 하나의 로그 파일에서 하나의 문자열 모니터링

./logsearch.sh localhost /var/tmp/logXray autonda /var/log/messages 60m 'can.*t.*open' '.'  1 2 single_errCheck -ndshow

시나리오 2 : 하나의 로그 파일에서 여러 문자열 모니터링

./logsearch.sh localhost /var/tmp/logXray autonda /var/log/messages 60m 'can.*t.*open_P_ntpd.*stat' '.'  1 2 multi_errCheck -ndshow

시나리오 3 : 여러 로그 파일에서 단일 / 다중 문자열 모니터링

./logsearch.sh localhost /var/tmp/logXray autonda /var/log 60m 'can.*t.*open_P_ntpd.*stat' '.'  1 2 multi_err_multi_logCheck -ndshow

노트:

_P_는 OR을 의미합니다-파이프 “|”를 대체합니다 “_P_”가 포함 된 문자열을 검색해야 할 가능성이 적기 때문에 symbol입니다. “_P_”를 입력하지 않으려면 _P_를 “|”로 대체하면됩니다.

이 스크립트를 사용할 때 자주 변경하는 매개 변수는 다음과 같습니다.

  1. 모니터 할 로그 파일 또는 로그 디렉토리
  2. 로그 파일의 보존 기간은 반드시 모니터링되어야합니다. 60 분 이상의 타임 스탬프가있는 로그 파일을 모니터링하거나 검색하지 마십시오.
  3. 보고자하는 문자열 / 패턴
  4. 태그-이것은 두 번째로 마지막으로 제공해야하는 인수입니다. / var / tmp / logXray에서 모니터링하고있는 로그 파일에 대한 통계를 기록합니다.
  5. 로그 옵션 -ndshow-지정한 패턴과 일치하는 로그에서 항목을 출력하려는 ​​경우 사용하려는 매개 변수입니다. 발견 된 각 패턴의 총 수를 보려면 ‘-ndshow’를 ‘-ndfoundmul’로 바꾸십시오.

‘-ndfoundmul’을 사용하면 다음과 비슷한 결과가 나타납니다.

[root@dgphxtest001]# ./logsearch.sh localhost /var/tmp/logXray autonda /var/log/messages 60m 'can.*t.*open_P_ntpd.*stat' '.'  1 2 blahblahA -ndfoundmul
OK: [/var/log/messages][1]  /var/log/messages:P=(can_t_open=0 ntpd_stat=0)_F=(117s)_R=(228,228=0)

원본 포스터 문제에 대한 해결책 : 여러 로그 파일에서 여러 문자열 스캔

./logsearch.sh localhost /var/tmp/logXray autonda /var/log 60m 'fatal_P_error_P_critical_P_failure_P_warning' '.'  1 2 multierr_logCheck -ndshow

운영체제 : Ubuntu 및 Red Hat에서 테스트되었습니다.


답변

grep -EFn "fatal|error|critical|failure|warning|search-string" /path/to/the/file/log_file?.lo* --color=auto

이것은 검색합니다 ‘치명적 오류 또는 중요한 실패 또는 경고 또는 검색 문자열’ 로 시작하는 이름을 가진 파일의 ‘LOG_FILE?’ / path / to / the / file / 경로 에 확장자 ‘lo ‘*를 입력하고 검색 문자열에 임의의 색상과 인쇄 줄 번호를 지정하십시오.