예를 들어 내가 할 때
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'
당신은 또한 볼 수 있습니다파이프라인에서 버퍼링 끄기이러한 명령 옵션을 사용할 수 없는 경우의 일반적인 해결 방법입니다.