1

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

4

1 回答 1

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
于 2013-01-23T22:28:19.260 回答