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