同时使用 Grep 和 Cut

同时使用 Grep 和 Cut

我想 grep tcpdump 的输出并剪切其中的一部分,但下面的命令不起作用。

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

相关内容