我有一个不断增长的测试日志,如下所示:
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/