pipe tcpdump输出到grep多行模式

时间:2014-08-09 05:30:03

标签: grep pipe multiline tcpdump

我想从tcpdump输出grep一个多行模式,如下所示: sudo tcpdump -A -s0 | grep -Pzo' foo。* \ n。* bar' 但是,它似乎不起作用。但是,如果我将数据转储到文件然后grep文件,它就有效。如何使用管道工作命令?

3 个答案:

答案 0 :(得分:1)

尝试添加-l

-l     Make stdout line buffered.  Useful if you want to see the data while capturing it.
       E.g.,
            tcpdump -l | tee dat
            tcpdump -l > dat & tail -f dat

答案 1 :(得分:0)

即使使用tcpdump的-l选项,我仍然无法理解为什么grep不能正常工作,但我发现这个stackoverflow帖子How to find patterns across multiple lines using grep?。所以我尝试了pcregrep,它起作用了。 sudo tcpdump -A -s0 | pcregrep -Mo" foo。* \ n。* bar"

答案 2 :(得分:0)

即使使用-l开关,我也无法将输出连接到尾部。我可以使用multitail代替tail -F来解决我的问题。

这对我有用:multitail -l "tcpdump -li eth0"