通过AWK转换日期

时间:2017-02-13 09:51:02

标签: date awk type-conversion

我有一个包含特定日期格式的记录太多的日期文件,如下面的第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列日期格式更改为第二列中的格式。 从逻辑上讲,我的意思如下:

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

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

1 个答案:

答案 0 :(得分:2)

awk '{split( $5, T, /\//); $5 = T[3] sprintf( "%0.2d", T[1]) sprintf( "%0.2d", T[2]); print}' YourFile

使用来自字段5($ 5)的直接信息放入一个数组(拆分)并使用2位数字格式重写为月和日(sprintf)in new&#34; reverse&#34;格式

我为每天编号,而不仅仅是11 - &gt; 15假设您提供样本而非约束