管道tcpdump输出到grep多行模式
我想从tcpdump输出中grep一个多行模式,如下所示: sudo tcpdump-A-s0 | grep-Pzo'foo.*\n.*bar'管道tcpdump输出到grep多行模式,grep,pipe,multiline,tcpdump,Grep,Pipe,Multiline,Tcpdump,我想从tcpdump输出中grep一个多行模式,如下所示: sudo tcpdump-A-s0 | grep-Pzo'foo.*\n.*bar' 然而,它似乎不起作用。但是,如果我将数据转储到一个文件中,然后对该文件进行grep处理,它就会起作用。如何使用管道执行命令?尝试添加-l: 我仍然不明白为什么grep不能在tcpdump中使用-l选项,但是我发现了这个stackoverflow帖子。所以我尝试了pcregrep,它成功了。 sudo tcpdump-A-s0 | pcregrep-Mo
然而,它似乎不起作用。但是,如果我将数据转储到一个文件中,然后对该文件进行grep处理,它就会起作用。如何使用管道执行命令?尝试添加
-l
:
我仍然不明白为什么grep不能在tcpdump中使用-l选项,但是我发现了这个stackoverflow帖子。所以我尝试了pcregrep,它成功了。
sudo tcpdump-A-s0 | pcregrep-Mo“foo.*\n.*bar”即使使用-l开关,我也无法将输出传输到tail。我可以通过使用
multitail
而不是tail-F
来解决我的问题
这对我有效:
multitail-l“tcpdump-li eth0”
尝试过sudo tcpdump-A-s0-l | grep-Pzo'foo.*\n.*bar',但仍然不起作用。我发现问题可能是由grep的-z选项引起的。设置好后,即使sudotcpdump-A-s0 | grep-Pzo-foo也不会工作。grep“”对我不起作用。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