【问题标题】:Converting dates by AWK通过 AWK 转换日期
【发布时间】:2017-02-13 09:51:02
【问题描述】:

我的日期文件包含太多包含特定日期格式的记录,例如以下第 5 列:

9010146679      20170129        26079   2/6/2017        2/11/2017       1002    
9010149451      20170129        26079   2/6/2017        2/13/2017       1002    
9010149451      20170129        24079   2/6/2017        2/14/2017       1005    
9010156092      20170129        26079   2/6/2017        2/15/2017       1002

我想将第 5 列日期格式更改为第 2 列中的格式。 从逻辑上讲,我的意思如下:

awk '{for (i=11;i<=15;i++) { if (5$=="2/i/2017") sub("2/i/2017","201702i") }}' file.txt

我找不到正确的语法。有人可以帮忙吗?

【问题讨论】:

    标签: date awk type-conversion


    【解决方案1】:
    awk '{split( $5, T, /\//); $5 = T[3] sprintf( "%0.2d", T[1]) sprintf( "%0.2d", T[2]); print}' YourFile
    

    使用来自字段 5 ($5) 的直接信息放入数组(拆分)并使用新的“反转”格式的月和日(sprintf)的 2 位数字格式重写

    假设你给出了一个样本而不是限制,我为每天的数字做了它,不仅仅是 11 -> 15

    【讨论】:

      猜你喜欢
      • 2015-12-22
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 2020-06-27
      • 2014-04-12
      • 1970-01-01
      相关资源
      最近更新 更多