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

Eri*_*ric 1 awk

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

gle*_*man 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
    }
'
Run Code Online (Sandbox Code Playgroud)

输出

2013-01-23 23:59:59.123456
Run Code Online (Sandbox Code Playgroud)