grep 중인 파일의 실시간 tail(tail -f)

grep 중인 파일의 실시간 tail(tail -f)

tail -f -n20 <file>파일의 마지막 20줄을 실시간으로 볼 수 있습니다 .

무언가에 대해 grep하려는 경우 tail -f <file> | grep <pattern>여전히 활성 상태이지만 tail의 출력을 통해서만 grep됩니다. 즉, 처음부터 20줄의 출력이 없다는 의미입니다. (20개 행 중 5개만 내 패턴과 일치하면 출력에서 ​​5개 행만 가져옵니다.)

내가 뭔가를하면

grep <pattern> <file> | tail -n20 

20라인의 출력이 있지만 라이브도 아니고

cat <file> | grep <pattern> | tail -n20

파일의 마지막 n줄의 실시간 업데이트를 보는 방법뒤쪽에포도?

답변1

tee프로세스 대체와 함께 사용할 수 있습니다 >().

tail -f -n 20 file.log | tee >(grep 'pattern')

이렇게 하면 마지막 20개 행이 표시 file.log되고 결과가 표시됩니다 grep.

답변2

에서는 처음부터 tail -fn20만 작동합니다.20

tail처음 20줄을 표시한 다음 계속합니다.모두새 행은 표시되는 즉시 추가됩니다(1행, 20행, 1000행).

또는 다른 말로 tail -fn20하면 .tail -n20tail -fn+1

여기에서 다음을 수행할 수 있습니다.

{ grep pattern | tail -n 20; tail -fn+1 | grep pattern; } < file

즉, 첫 번째 단계를 수동으로 수행한 다음 tail -f나머지 단계를 모두 표시합니다.

관련 정보