Grep과 Cut을 동시에 사용하기

Grep과 Cut을 동시에 사용하기

tcpdump의 출력을 grep하고 일부를 잘라내고 싶지만 아래 명령이 작동하지 않습니다.

tcpdump ... | grep -i --line-buffered "..." | cut -d'&' -f1,2

문제가 무엇인지 아시나요? tcpdump가 실시간 데이터를 생성하기 때문인 것 같은데 이 문제를 해결하는 방법을 모르겠습니다.

답변1

tcpdump 와 함께 이 옵션을 사용하세요 -l.

-l은 표준 출력이 라인 버퍼링되도록 합니다. 이는 캡처된 데이터를 보려는 경우에 유용합니다. 예를 들어 tcpdump -l | tee dat'' ortcpdump -l > dat & tail -f dat''입니다.

맨 페이지에 명확하게 명시되어 있습니다.

tcpdump -l ... | grep -i "..." | cut -d'&' -f1,2

답변2

백그라운드 프로세스를 통해 출력을 tcpdump파일로 파이프한 다음 tail -F <file> --pid=$!이를 사용하여 추적할 수 있습니다.

그처럼

tcpdump ... > tcpdump.log 2>&1 &
tail -F tcpdump.log --pid=$! | grep -i --line-buffered "..." | cut -d '&' -f1,2

관련 정보