【发布时间】:2021-06-27 22:37:32
【问题描述】:
我有一个带有时间戳和里程表读数的输入文件,如下所示:
2017-09-16 18:14:00,80465
2017-09-19 18:23:00,80898
2017-09-21 08:05:00,81253
2017-09-27 18:20:00,82155
2017-10-03 18:36:00,82902
2017-10-09 18:33:00,83699
...并想添加转换为纪元的时间戳,代码如下:
BEGIN {}
{
# change timestamp to epoch (without TZ correction)
epoch_returned = timestamp_to_epoch($1)
printf("%s,%s\n", $0, epoch_returned)
}
function timestamp_to_epoch(timestamp_in) {
FPAT = "[0-9][0-9]"
epoch_out = mktime($1$2" "$3" "$4" "$5" "$6" "$7)
return epoch_out
}
输出产生这个:
2017-09-16 18:14:00,80465,-1
2017-09-19 18:23:00,80898,1505809380
2017-09-21 08:05:00,81253,1505945100
2017-09-27 18:20:00,82155,1506500400
2017-10-03 18:36:00,82902,1507019760
2017-10-09 18:33:00,83699,1507537980
第一行总是返回 -1。 我已经删除了输入文件中的第一行,(然后)第一行仍然返回-1。 我在输入中只留下了一行。也返回 -1。
如果我在输入文件中输入一个空行,它将返回 -1,而所有其他都按预期添加纪元。
这个我看了好久还是想不通。
我在Linux Mint 20.1 Cinnamon 4.8.6上使用GNU Awk 5.0.1, API: 2.0 (GNU MPFR 4.0.2, GNU MP 6.2.0)。
任何提示表示赞赏。
【问题讨论】: