gpt4 book ai didi

linux - 使用 awk 或 sed 在文件的第一列中添加增量日期

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:08 24 4
gpt4 key购买 nike

我想在从“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 

最佳答案

使用 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

关于linux - 使用 awk 或 sed 在文件的第一列中添加增量日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42469948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com