【发布时间】:2016-08-25 11:29:49
【问题描述】:
我想使用 gawk 将 unix 时间戳转换为日期格式,使用 strftime。
当我使用 strftime 一次时,我得到了预期的结果:
$ echo 1454310000 | gawk -F "," '{$s=strftime("%Y-%m-%d %H:%M:%S", ($1), 1); $e=$s; print ($s, $e);}'
2016-02-01 07:00:00 2016-02-01 07:00:00
但是当我多次使用strftime时,两个返回的结果都是完全错误的:
$ echo 1454310000 | gawk -F "," '{$s=strftime("%Y-%m-%d %H:%M:%S", ($1), 1); $e=strftime("%Y-%m-%d %H:%M:%S", ($1), 1); print ($s, $e);}'
1970-01-01 00:33:36 1970-01-01 00:33:36
为什么会发生这种情况以及如何纠正它以便可以在同一输入上使用 strftime 两次?
【问题讨论】:
-
您认为
$e和$s是什么意思?我认为您在awk代码中使用了shell 代码样式。请阅读awk基本指南并了解awk,因为print $n不打印变量n的内容,而是输出输入行中的第n字段。 -
当我运行你的
awk代码时,我得到fatal: 3 is invalid as number of arguments for strftime。