여러 파일에서 키워드를 지속적으로 추적하고 각 보고서 줄의 시작 부분에 파일 이름을 포함하는 방법

여러 파일에서 키워드를 지속적으로 추적하고 각 보고서 줄의 시작 부분에 파일 이름을 포함하는 방법
tail -f a/b/c.log d/e/f.log

다음과 같은 로그를 기록합니다.

==> a/b/c.log <==
xxx
yyy
Exception happened 1
zzz

==> d/e/f.log <==
rrr
Exception happened 2
sss

다음과 같이 "Exception"이 포함된 줄을 선택하도록 명령을 변경하려면 어떻게 해야 합니까?

a/b/c.log: Exception happened 1
d/e/f.log: Exception happened 2

이 솔루션은 모든 Linux 명령을 사용할 수 있습니다.

답변1

당신이 가지고 있다면multitail일단 설치되면 이를 사용하여 -E 특정 정규식과 일치하는 줄만 선택하고 --label해당 줄 앞에 파일 이름을 붙일 수 있습니다. 예를 들어( -N 0필요에 맞게 조정):

multitail --follow-all -N 0 --mergeall -E 'Exception' \
--label 'a/b/c.log: ' a/b/c.log --label  'd/e/f.log: ' d/e/f.log

액세스할 수 없는 경우 multitail각 파일로 작업하고 다음 과 같은 tail -f도구를 사용하여 출력을 사후 처리 할 수 있습니다 grep.sedawk

tail -f a/b/c.log | sed '/Exception/!d;s|^|/a/b/c.log: |' &
tail -f d/e/f.log | sed '/Exception/!d;s|^|/d/e/f.log: |'

또는

tail -f a/b/c.log | awk '/Exception/{print "a/b/c.log: " $0}' &
tail -f d/e/f.log | awk '/Exception/{print "d/e/f.log: " $0}'

관련 정보