小编fas*_*n01的帖子

在cvs中使用awk mktime将日期时间字段转换为Epoch

我有一个 csv 文件,其中包含大约 600 万行分隔线

    1,2018-11-25 23:00:26,403,74
    1,2018-11-25 23:02:10,406,68
    1,2018-11-25 23:04:19,448,108
    1,2018-11-25 23:05:26,417,79
    1,2018-11-25 23:05:30,378,80
    1,2018-11-25 23:05:31,360,78
    1,2018-11-25 23:06:45,391,79
    1,2018-11-25 23:06:50,432,76
Run Code Online (Sandbox Code Playgroud)

这些时间是 UTC,我住在欧洲 UTC + 1。我已经“编写”了我的第一个 AWK 脚本:test.awk:

    BEGIN { FS=",";OFS="\t"}
    {
        $2 = mktime(gensub(/[-:]/,"  ","g",$2))

        print
    }
Run Code Online (Sandbox Code Playgroud)

当我运行时:

      $ awk -f test.awk mark.csv
Run Code Online (Sandbox Code Playgroud)

它给出了输出:

    1   1543183226  403 74
    1   1543183330  406 68
    1   1543183459  448 108
    1   1543183526  417 79
    1   1543183530  378 80
    1   1543183531  360 78
    1   1543183605  391 79
    1   1543183610  432 76
Run Code Online (Sandbox Code Playgroud)

看起来不错,但问题是纪元提前了一个小时

    1543183226?2018-11-25 23:00:26 …
Run Code Online (Sandbox Code Playgroud)

linux bash shell awk

1
推荐指数
1
解决办法
160
查看次数

标签 统计

awk ×1

bash ×1

linux ×1

shell ×1