【问题标题】:how to take a date in csv and convert it from european timestamp to the american format in bash?如何在 csv 中获取日期并将其从欧洲时间戳转换为 bash 中的美国格式?
【发布时间】:2016-09-13 23:10:18
【问题描述】:

我想将 csv 第一行中的日期转换为美国符号。对我来说最好的方法是使用 bash。但是日期并没有链接我的格式,而且我对 awk 的尝试很糟糕。

原始 CSV:

Datum;Verbrauch
15.05.2016 00:00;0,075
15.05.2016 00:15;0,075
15.05.2016 00:30;0,075
15.05.2016 00:45;0,075
15.05.2016 01:00;0,075

想要的 CSV:

Datum;Verbrauch
2016-05-15 00:00:00;0,075
2016-05-15 00:15:00;0,075
2016-05-15 00:30:00;0,075
2016-05-15 00:45:00;0,075
2016-05-15 01:00:00;0,075

感谢您的帮助

【问题讨论】:

    标签: bash date csv awk


    【解决方案1】:

    这里不需要date的强大功能:你需要的格式只需使用printf就可以实现:

    $ awk -F'[ .:;]' 'NR==1{print;next} {printf "%s-%s-%s %s:%s:00;%s\n",$3,$2,$1,$4,$5,$6}' file
    Datum;Verbrauch
    2016-05-15 00:00:00;0,075
    2016-05-15 00:15:00;0,075
    2016-05-15 00:30:00;0,075
    2016-05-15 00:45:00;0,075
    2016-05-15 01:00:00;0,075
    

    工作原理

    • -F'[ .:;]'

      告诉 awk 使用空格、句点、冒号或分号中的任何一个作为字段分隔符

    • NR==1{print;next}

      这将打印标题行不变

    • printf "%s-%s-%s %s:%s:00;%s\n",$3,$2,$1,$4,$5,$6

      这会根据需要重新格式化行。

    【讨论】:

    • 谢谢!那工作得很好。并感谢“它是如何工作的”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 2013-04-22
    相关资源
    最近更新 更多