Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
管道tcpdump输出到grep多行模式_Grep_Pipe_Multiline_Tcpdump - Fatal编程技术网

管道tcpdump输出到grep多行模式

管道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

我想从tcpdump输出中grep一个多行模式,如下所示: sudo tcpdump-A-s0 | grep-Pzo'foo.*\n.*bar'
然而,它似乎不起作用。但是,如果我将数据转储到一个文件中,然后对该文件进行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