使用awk从午夜过来的微秒转换时间戳

时间:2013-01-23 21:19:55

标签: awk

我有一个大的linux文件,在每行打印出一个时间戳,标记为午夜过后的微秒。我一直试图想出一个聪明的短awk脚本,它将使用awk将其改为YY-mm-d HH:MM:SS.ms格式(我在这里检查了一些其他帖子,但大多数处理转换从时代开始,而不是从今天午夜开始)。我已经尝试了一些strftime的东西,但似乎没有任何东西让我得到正确的日期和时间。感谢。

1 个答案:

答案 0 :(得分:5)

我假设“自午夜以来的微秒”意味着整数微秒

echo 86399123456 | awk '
    BEGIN { midnight = mktime(strftime("%Y %m %d 0 0 0", systime())) }
    {
        seconds = $1 / 1e6
        fraction = $1 % 1e6
        printf "%s.%06d\n", strftime("%Y-%m-%d %T", midnight + seconds), fraction
    }
'

输出

2013-01-23 23:59:59.123456