2017-02-13 28 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