tail -f에서 특정 키워드가있는 항목을 어떻게 필터링합니까? tail -f내 통나무에

tail -f내 통나무에 싶어 그러나 단어가있는 모든 것을 필터링하고 싶습니다.

“ELB”, “Pingdom”, “건강”



답변

grep 대신 awk를 사용하는 방법을 모르지만 이것은 나를 위해 작동합니다

tail -f file.log | grep -Ev '(ELB|Pingdom|Health)'

편집 :dmourati갈렙이 지적, 당신은 또한 사용할 수있는 egrep대신의 grep -E편의를 위해. 일부 시스템에서 이것은 동일한 바이너리에 대한 링크이며, 다른 시스템에서는 grep 패키지에서 제공 한 사본입니다. 어느 쪽이든 -E스위치 대신 사용할 수 있습니다. 그러나 GNU grep 매뉴얼 페이지에 따르면 :

[…]이 개 변형 프로그램 egrepfgrep사용할 수 있습니다. egrep와 동일합니다 grep -E. fgrep와 동일합니다 grep -F. 직접 호출 egrep또는 fgrep더 이상 사용되지 않지만이를 사용하는 히스토리 애플리케이션이 수정되지 않은 상태로 실행될 수 있도록 제공됩니다.

그것들은 동의어 명령이기 때문에 egrep이 전혀 없다면 기본 설정으로 내려갑니다. 그러나 앞으로 호환성을 위해 grep -E다른 방법은 공식적으로 사용되지 않으므로 구문 을 사용하는 것이 좋습니다 .


답변

필터링하려는 파이프로 구분 된 단어 목록을 사용하여 파이프를 연결하십시오.

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.


답변

tail -f /path/to/log | egrep -v 'ELB|Pingdom|Health'

답변

이 정보를 왜 기록 하시겠습니까?

  • 보관 용으로 엄격합니까?
  • 로그 파일의 다른 키워드 또는 패턴에 따라 다른 스크립트를 조건부로 실행 하시겠습니까?

로그 파일의 내용에 따라 스크립트 동작을 수행하려면 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 문에서 패턴을 지정하고 다른 동작을 지정하고 모든 것을 루프로 감싸고 입력의 일부를 다른 파일에 쓰거나 완전히 삭제하는 매우 강력한 필터를 쉽게 작성할 수 있습니다. 입력 내용에 따라 조치를 취하고 다른 스크립트를 실행하십시오.

따라서 로그 파일을 필터링하거나 로그 입력에 대해 조치를 취하거나 보관상의 이유로 왜 로그 파일을 필터링하려고합니까?