bash – 管道尾部输出虽然grep两次

使用典型的Apache访问日志,您可以运行:
tail -f access_log | grep "127.0.0.1"

哪些只会显示指定IP地址的日志(创建时).

但是,为什么在第二次通过grep管道时会失败,以进一步限制结果?

例如,“.css”的简单排除:

tail -f access_log | grep "127.0.0.1" | grep -v ".css"

不会显示任何输出.

我相信这里的问题是第一个grep正在缓冲输出,这意味着第二个grep将不会看到它,直到缓冲区被刷新.

尝试在您的第一个grep上添加–line-buffered选项:

tail -f access_log | grep --line-buffered "127.0.0.1" | grep -v ".css"

有关更多信息,请参阅“BashFAQ/009 — What is buffering? Or,why does my command line produce no output: tail -f logfile | grep 'foo bar' | awk ...

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...