【整理】Linux输出内容追加时间戳

原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 【整理】Linux输出内容追加时间戳
Time

Time

来源: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'

 

原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: 【整理】Linux输出内容追加时间戳

文章的脚注信息由WordPress的wp-posturl插件自动生成



|2|left
打赏

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: