Awk 将连续流输送到另一个命令

Awk 将连续流输送到另一个命令,awk,stream,pipe,tail,Awk,Stream,Pipe,Tail,我写了一个程序来实时分析日志文件。我需要用IPs来喂它。它可以与以下命令配合使用: cat /var/log/apache2/access.log | awk '{print $1}' | ./my_program tail -f /var/log/apache2/access.log | awk '{print $1}' 此外,我还可以通过以下命令实时获取IP: cat /var/log/apache2/access.log | awk '{print $1}' | ./my_progra

我写了一个程序来实时分析日志文件。我需要用IPs来喂它。它可以与以下命令配合使用:

cat /var/log/apache2/access.log | awk '{print $1}' | ./my_program
tail -f /var/log/apache2/access.log | awk '{print $1}'
此外,我还可以通过以下命令实时获取IP:

cat /var/log/apache2/access.log | awk '{print $1}' | ./my_program
tail -f /var/log/apache2/access.log | awk '{print $1}'
当我将其传输到我的程序时,我的程序不会接收任何内容:

tail -f /var/log/apache2/access.log | awk '{print $1}' | ./my_program

这似乎是一个缓冲的问题。有没有办法将连续的流传送到我的程序?

我找到了缓冲问题的最终解决方案

问题是stdio正在被缓冲


如果完成了缓冲
awk
,则可以将其设为行缓冲。你能试试
tail-f/var/log/apache2/access.log | awk-W interactive'{print$1}'|/my_程序
,看看它是否有效吗?