当使用 

tail -f test.log | grep "mode" | awk '{print $5}'命令

或者 tail -f test.log | awk '/mode/ {print $5}'的时候,如果test.log中满足模式mode的数据很少,会发现即便是test.log中新出现了满足mode的行,但是上面两个命令都没有任何输出。

原因在于grep和awk处于效率的考量,会缓存一批数据再输出到标准输出。

grep的--line-buffered选项和awk的fflush(stdout)命令可以使得grep和awk不缓存数据。如:

tail -f test.log | grep --line-buffered "mode" | awk '{print $5}'

tail -f test.log | awk '/mode/ {print $5,$6; fflush(stdout)}''

相关文章:

  • 2022-12-23
  • 2021-10-27
  • 2021-04-04
  • 2022-01-17
  • 2022-01-11
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-14
  • 2021-05-22
  • 2021-10-26
  • 2021-05-14
  • 2022-02-04
  • 2021-07-26
  • 2021-07-16
相关资源
相似解决方案