2017-02-13 78 views
0

我有含有特定的日期格式类似下面的第5列太多记录的文件日期:转换日期由AWK

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 

我找不到正确的语法。谁能帮忙?

回答

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

利用放入阵列(分)场5($ 5)直接信息,并使用2位格式在新的“逆转”格式

我做到了月和日(sprintf的)改写对于每一天的数字,不仅是11 - > 15假设你给出了一个样本,而不是一个约束

+0

太棒了!它的工作原理... 非常感谢 – aschkant