例如,当我这样做时
sudo tcpdump | grep -E '.dev:8888|ads' | grep -v 'adsl'
ads.google.com
由于某种原因,所有输出都被抑制,例如,如果我访问,则不会显示任何内容,当我删除 时,它会显示grep -v
,因此基本命令有效。
但是,如果我尝试创建一个包含以下内容的文件:
test
test2
我是否grep -E 'test|test2' | grep -v 'test2'
得到了我想要的输出(test
)。那么当它不断更新时有什么区别,我将如何使用多个选项来grep
修改输出?
答案1
您可能会遇到行缓冲问题。指示tcpdump
中间grep
命令对它们的输出进行行缓冲,如下所示:
sudo tcpdump -l | grep --line-buffered -E '.dev:8888|ads' | grep -v 'adsl'
也可以看看关闭管道中的缓冲当这些命令选项不可用时的一般解决方案。