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