来源:How to append a timestamp to each line as it comes out of grep?
场景需求:
当Linux输出日志的时候没有时间戳,但是依然希望知道是什么时间输出的日志,那么就需要追加时间戳到日志上。
就像下面这样:
[root@localhost ~]# echo "hello, world" | gawk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0 }'
2018-11-21 14:09:30 hello, world
[root@localhost ~]#
How?
Look!
你可以追加一个静态的时间戳到文件里,使用 sed 和 date 命令:
... | sed "s/^/$(date) /" >> output.txt
如果你需要一个真实的动态的时间戳,使用 gawk 命令(strftime function):
... | gawk '{ print strftime(), $0 }'
我们可以定义自己喜欢的时间格式:
... | gawk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0 }'
如果刷新日志的频率不够快,那是因为有缓存,可以调用下刷新函数:
... | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; fflush() }'
如果系统没有安装gawk,也有其他的方式可以实现:
可以安装ts
... | ts '%F %T'
可以使用perl:
... | perl -pe 's/^/localtime . " "/e'
或者使用perl格式化:
... | perl -MPOSIX -pe 's/^/strftime("%Y-%m-%d %H:%M:%S", localtime) . " "/e'
文章的脚注信息由WordPress的wp-posturl插件自动生成