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

时间:2014-10-14 03:44:52

标签: linux shell awk

我有一个增长 test.log,如下所示:

abc ID1
aaa ID2
abb ID3
ccc ID4

我希望保存相应的ID“。* a。 b。到日志文件,就像这样

$ 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?

2 个答案:

答案 0 :(得分:0)

你能试试吗

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

从手册页中说它会刷新标准输出。

答案 1 :(得分:0)

这似乎适用于mawk。

$ tail -f test.log | awk -W interactive '{print $2}' > ID.log

-W interactive使mawk写入无缓冲到stdout。