답변:
grep 대신 awk를 사용하는 방법을 모르지만 이것은 나를 위해 작동합니다
tail -f file.log | grep -Ev '(ELB|Pingdom|Health)'
편집 : 로 dmourati 와 갈렙이 지적, 당신은 또한 사용할 수있는 egrep
대신의 grep -E
편의를 위해. 일부 시스템에서 이것은 동일한 바이너리에 대한 링크이며, 다른 시스템에서는 grep 패키지에서 제공 한 사본입니다. 어느 쪽이든 -E
스위치 대신 사용할 수 있습니다. 그러나 GNU grep 매뉴얼 페이지에 따르면 :
[...]이 개 변형 프로그램
egrep
및fgrep
사용할 수 있습니다.egrep
와 동일합니다grep -E
.fgrep
와 동일합니다grep -F
. 직접 호출egrep
또는fgrep
더 이상 사용되지 않지만이를 사용하는 히스토리 애플리케이션이 수정되지 않은 상태로 실행될 수 있도록 제공됩니다.
그것들은 동의어 명령이기 때문에 egrep이 전혀 없다면 기본 설정으로 내려갑니다. 그러나 앞으로 호환성을 위해 grep -E
다른 방법은 공식적으로 사용되지 않으므로 구문 을 사용하는 것이 좋습니다 .
grep -E
대신에 사용 egrep
하면 중복 답변이 필요합니까?
필터링하려는 파이프로 구분 된 단어 목록을 사용하여 파이프를 연결하십시오.
tail -f log_file | egrep -v 'ELB|Pingdom|Health'
일치 목록 주위에 괄호를 사용하는 것은 선택 사항입니다. 이 때문에 |
그렙 의해 논리 OR 연산자로 처리되어 그 서브 그룹의 여부의 일환으로 수행 할 것인지. '(ELB|Pingdom|Health)'
정확히 동일하게 작동합니다. 어떤 경우에는 구문이 더 분명 할 수 있습니다. 괄호를 추가하지 않고 단일 일치 항목에서 가능한 일치 목록으로 전환 할 수 있으므로 입력하기가 더 쉽습니다.
추가적인 크레딧을 얻으 multitail
려면 출력을 필터링 할 때 ninja foo를 수행하는 것이 좋습니다. 예를 들어 다음과 같이 단어를 필터링 할 수 있습니다.
multitail -e ELB -e Pingdom -e Health -f log_file
출력을 필터링하지 않고 색상을 지정하거나 강조 표시하는 데 사용할 수도 있습니다.
EDit : egrep이 더 이상 사용되지 않는 대체 방법 인 DTests 답변 과 설명을 참조하십시오 grep -E
.
이 정보를 왜 기록 하시겠습니까?
로그 파일의 내용에 따라 스크립트 동작을 수행하려면 Expect를 사용하여 필터링을 수행 할 수 있습니다. ( http://en.wikipedia.org/wiki/Expect ) Expect는 Tcl 확장이지만 Python 버전의 Expect도 있습니다.
Expect는 입력 스트림에 존재하는 상태 또는 패턴에 따라 조건에 따라 다른 동작을 지정할 수있는 이처럼 유연한 유연한 스위치 식 설명을 제공합니다. 예를 들면 다음과 같습니다.
expect {
"password:" {
send "password\r"
}
"yes/no)?" {
send "yes\r"
set timeout -1
}
timeout {
exit
}
-re . {
exp_continue
}
eof {
exit
}
}
따라서 expect 문에서 패턴을 지정하고 다른 동작을 지정하고 모든 것을 루프로 감싸고 입력의 일부를 다른 파일에 쓰거나 완전히 삭제하는 매우 강력한 필터를 쉽게 작성할 수 있습니다. 입력 내용에 따라 조치를 취하고 다른 스크립트를 실행하십시오.
따라서 로그 파일을 필터링하거나 로그 입력에 대해 조치를 취하거나 보관상의 이유로 왜 로그 파일을 필터링하려고합니까?