我想 grep tcpdump 的输出并剪切其中的一部分,但下面的命令不起作用。
tcpdump ... | grep -i --line-buffered "..." | cut -d'&' -f1,2
你知道问题出在哪里吗?我猜这是因为 tcpdump 产生实时数据,但我不知道如何解决这个问题。
答案1
将该选项与 tcpdump 结合使用-l
。
-l 使标准输出行缓冲。如果您想在捕获数据时查看数据,这很有用。例如,
tcpdump -l | tee dat'' or
tcpdump -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