我想在文件的第一列添加日期,该日期从" 1950/01/01" (格式:%m /%d /%Y)和日期应使用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
答案 0 :(得分: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 :(得分:1)
或者使用bash和GNU日期:
a=1950/01/01
while IFS= read -r line; do echo "$a,$line"; a=$(date +%Y/%m/%d -d "$a 1 day"); done < file
输出:
1950/01/01,1,2,3,4 1950/01/02,3,4,5,6 1950/01/03,4,7,8,9