awk - 通过管道将连续流传输到另一个命令

标签 awk stream pipe tail

我编写了一个程序来实时分析日志文件。我需要给它提供 IP。使用以下命令可以正常工作:

cat /var/log/apache2/access.log | awk '{print $1}' | ./my_program

此外,我可以使用以下命令实时获取 IP:

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

当我通过管道将其传输到我的程序时,我的程序没有收到任何内容:

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

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

最佳答案

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

The problem is that stdio is being buffered, ...

关于awk - 通过管道将连续流传输到另一个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30309000/

相关文章:

java - PipedInputStream、PipedOutputStream 和进程

linux - 在 Linux 中将相关数据行分组到单个列中

variables - $0 中的 awk gsub 也更改变量

PHP:如何获取特定VLAN的IP地址

java - 在 Java 中生成 DES key 并通过套接字传递它

java - 在 JAVA 中使用 Lambda 的 AWS DynamoDB 触发器

javascript - 逐行读取 Node 串口流

linux - 简单的 sed 替换

c++ - 在 unix 中如何关闭管道句柄? (pclose() 的 fclose())?

powershell - 比较对象-麻烦理解管道