2017-06-29 104 views
1

有一個文本文件,顯示日期(MM/DD/YYYY)列。我想將第4列的日期格式更改爲DD-Mmm-YYYY。 當我使用日期-d 08/31/2017 "+%d-%b-%Y"命令它完美的作品,並將日期格式轉換爲31-Aug-2017。但是當我在bash腳本中使用awk執行相同的命令時,它不適合我。使用bash腳本將日期格式MM/DD/YYYY轉換爲DD-Mmm-YYYY

awk 'BEGIN { FS = ","; OFS = FS;} {if(NR>1){$4=date -d $4 "+%d-%b-%Y";print} else{print}}' file >> tmpfile 

回答

1

您需要使用|重定向date命令並返回輸出等,如果第四列是一個你關心的文件「文件名」:

awk '{ print |"date -d "$4" \"+%d-%b-%Y\"" }' filename 

完整的解決方案是:

awk -F, '{ for (i=1;i<=3;i++) { var=var$i"," } for (i=5;i<=NF-1;i++) { var1=var1$i"," } print |"echo "var"$(date -d "$4" \"+%d-%b-%Y\"),"var1$NF }' filename 

我們知道我們正在關注第四列,所以我們建立一個具有列1到3的變量(var),然後建立一個日期命令,最後建立一個建築變量1。所有這些都用來構建一個直接的回顯命令。

+0

我相信,OP想要打印的整條生產線不僅第4列。 – Makkes

+3

我期待給用戶一個關於如何解決問題的想法。我已經添加了完整的解決方案。 –