이것 .
로그는 다음과 같습니다 :
[09:44:22] [main] ERROR [url/location] - A ONE LINE ERROR
[09:44:22] [main] ERROR [url/location] - Another ERROR
[09:44:22] [main] SOMETHING DIFFERENT
[09:44:22] [main] SOMETHING DIFFERENT AGAIN
[09:44:22] [main] WARN [url/location] - ANOTHER ONE LINE WARN
줄간에 빈 줄이없는 줄 바꿈. 때때로 특정 조각에 대한 추가 정보가있을 때 들여 쓰기가 있습니다.
ERROR
가 포함 된 모든 줄을 당기고 싶습니다
(이상적으로
ERROR
를 가져올 수있는 스크립트로
그리고/또는
FAIL
WARN
등)에 따라 파라미터에 따라 표시합니다. 실패에 대한 로그를 선별하고 훨씬 쉽게 만들 수 있습니다.
-
답변 # 1
-
답변 # 2
GNU grep
아주 간단하게 할 수 있습니다.man grep
에서 :Two regular expressions may be joined by the infix operator |; the resulting regular expression matches any string matching either subexpression.
grep "ERROR\|FAIL\|WARN" /path/to/example.log
egrep
를 벗어날 필요가 없습니다. 기호.|
-
답변 # 3
이제 데이터 형식이 정해지면 대답이 훨씬 간단 해집니다 :
egrep "ERROR|FAIL|WARN" /path/to/example.log
this를 위해 제작되었습니다.grep
로 사용와이즈 비즈
grep '<PATTERN>' <dataFile>
입니다 또는<PATTERN>
나와 @murphy이 여전히 데이터 형식에 대한 잘못된 가정을 가지고있을 때 아래 답변이 작성되었습니다 :
다음은오류만 검색하는 한 줄 awk 프로그램입니다.
SearchWORD1
이를 매개 변수로 유연한 쉘 함수로 만들 수 있습니다 :
SearchW1\|SearchW2
awk '/ERROR/{a=1;print} /^ / || /^\t/ {if (a) print;next} !/ERROR/ {a=0}'
로 실행 또는searchlog(){ awk -f <( echo " /$1/{a=1;print} /^ /||/^\t/{if (a) print;next} ! /$1/{a=0} "); }
.다른 응답자가 "추측 한"예시 데이터 형식의 결과는 다음과 같습니다.
LogData_generated_by_program | searchlog <PATTERN>
searchlog <PATTERN> < File_containing_Log_Data
- awk - 다중 열 로그 파일의 사후 처리
- text processing - sed 또는 awk 등으로 줄 바꿈을 "조건부로"제거하는 방법은 무엇입니까?
- text processing - 파일에서 (하나 또는) 두 개의 다른 패턴을 regexp로 바꿉니다
- AWK/sed - awk/sed - 특정 값보다 낮은 숫자 앞에 텍스트 파일에 텍스트 쓰기
- text processing - AWK 또는 SED를 사용하여 다른 파일에서 오는 변수 덕분에 파일에서 줄 삭제
- text processing - 다른 파일에서 가져온 여러 데이터로 파일 구문 분석
- text processing - \ n + ">"및 숫자 헤더를 추가하여 200 자마다 줄을 구분하려면 어떻게해야합니까?
- text processing - 여러 줄 패턴을 문자로 대체
- text processing - 빈 줄을 위 줄 내용으로 교체
- awk - 두 번째 패턴이 발생한 경우에만 두 개의 패턴을 인쇄
로그 파일이 다음과 같다고 생각하십니까?
example.log :
한 줄짜리와 펄은 아니지만, 일을해야한다 :
logsifter.pl :
처럼 부르세요 :