여러 옵션(실시간 출력)과 함께 grep을 사용하는 방법은 무엇입니까?

여러 옵션(실시간 출력)과 함께 grep을 사용하는 방법은 무엇입니까?

예를 들어 내가 할 때

sudo tcpdump | grep -E '.dev:8888|ads' | grep -v 'adsl'

ads.google.com어떤 이유로 모든 출력이 억제됩니다. 예를 들어 액세스하면 아무 것도 표시되지 않고 삭제하면 grep -v기본 명령이 작동합니다.

그러나 다음 내용으로 파일을 만들려고 하면:

test
test2

grep -E 'test|test2' | grep -v 'test2'내가 원하는 결과를 얻 습니까 ? ( test). 계속 업데이트할 때의 차이점은 무엇이며 grep여러 옵션을 사용하여 출력을 수정하려면 어떻게 해야 합니까?

답변1

행 버퍼링 문제가 있을 수 있습니다. 다음과 같이 tcpdump중간 grep명령에 출력을 라인 버퍼링하도록 지시합니다 .

sudo tcpdump -l | grep --line-buffered -E '.dev:8888|ads' | grep -v 'adsl'

당신은 또한 볼 수 있습니다파이프라인에서 버퍼링 끄기이러한 명령 옵션을 사용할 수 없는 경우의 일반적인 해결 방법입니다.

관련 정보