linux - 重定向 tail -f + grep/awk 的输出时发生了什么?

标签 linux shell awk

我有一个不断增长的测试日志,如下所示:

abc ID1
aaa ID2
abb ID3
ccc ID4

我想保存“.*a.b.”的相应ID到日志文件,如下所示

$ tail -f test.log | grep --line-buffered '.*a.*b.*' | awk '{print $2}' > a_ID.log 

我试过了

$ tail -f test.log | grep '.*a.*b.*'
$ tail -f test.log | grep --line-buffered '.*a.*b.*' > a.log

两者都工作正常,但是 awk 应该做什么?

# No output
$ tail -f test.log | awk '{print $2}'
# Obviously nothing in ID.log
$ tail -f test.log | awk '{print $2}' > ID.log

awk 有像 grep 一样的“--line-buffered”吗? sed 怎么样?

最佳答案

你可以试试吗

$ tail -f test.log | awk '{ print $2; fflush(); }'

从手册页来看,它说它将刷新标准输出。

关于linux - 重定向 tail -f + grep/awk 的输出时发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26352297/

相关文章:

c++ - libboost_python-py27.so.1.53.o 没有这样的文件或目录

python - 在 shell 脚本中检测 python 版本

linux - 将一列从一个表添加到另一个表的特定位置

awk 将字符串拆分为单词和数字

c++ - Linux 中包含文件

c++ - 如何使用libevent检测文件锁何时释放?

Linux 命令中的命令

bash - 如何使用shell脚本比较两个不同目录中的同名文件

bash - Bash Awk命令在Hadoop指南中给出错误

json - 使用 jq 或 Python 解析 JSON