我用这一行代码为日志文件的每一行添加一个时间戳:

tail -f log  | grep -a --line-buffered "." | awk '{ print strftime("%s\t"), $0; fflush() }'

不幸的是,当我需要数据点之间的毫秒分辨率时,它只提供完整的秒数。有没有同样优雅的解决方案来获得ms时间戳?我不在乎从纪元开始的时间,只在乎字里行间的差别。
谢谢!

最佳答案

您可以尝试将grepawk替换为perl及其Time::HiRes内置模块,例如:

tail -f infile | perl -MTime::HiRes=time -ne 'printf "%.3f\t%s", time(), $_'

它会产生如下结果:
1390014680.197  one
1390014680.197  two
1390014680.197  three
1390014680.197  four
1390014680.197  five
1390014680.197  six
1390014689.414  seven
1390014693.542  eight

关于linux - awk strftime返回时间戳,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21199415/

10-15 02:01