2017-02-26 136 views
1

我想在從「1950/01/01」(格式:%m /%d /%Y)開始的文件的第一列中添加日期。並且日期應該使用awk或sed隨每行增加。 當添加日期,閏年還需要考慮 ..使用awk或sed在文件的第一列中添加遞增日期

文件內容是:

1,2,3,4 
3,4,5,6 
4,7,8,9 

預期輸出:

1950/01/01,1,2,3,4 
1950/02/01,3,4,5,6 
1950/03/01,4,7,8,9 

到目前爲止,我已經設法增加格式化日期在第一列但不能在每行增加。

awk -v date="$(date -d '1950/01/01' '+%m/%d/%Y')" -F"," 'BEGIN { OFS = "," } ; {print date, $0}' inout.csv 

回答

1

使用Gawk

輸入

$ cat file 
1,2,3,4 
3,4,5,6 
4,7,8,9 

輸出

$ awk -v date="$(date -d '1950/01/01' '+%s')" '{print strftime("%Y/%d/%m",date)","$0; date+=86400}' file 
1950/01/01,1,2,3,4 
1950/02/01,3,4,5,6 
1950/03/01,4,7,8,9 

說明

awk -v date="$(date -d '1950/01/01' '+%s')" '{ # call awk set var date with timestamp 

     print strftime("%Y/%d/%m",date) "," $0; # print date, sep comma and current line 
     date+=86400        # one day = 86400 seconds, just increment 
} 
' file 
1
與bash和GNU日期

或者:

​​

輸出:

 
1950/01/01,1,2,3,4 
1950/01/02,3,4,5,6 
1950/01/03,4,7,8,9 
相關問題