根据开始和结束日期生成一系列日期

时间:2015-05-25 11:30:17

标签: date awk

希望根据Start Date ($1)End Date ($2)生成连续日期。 闰年也在例子中。

INPUT.TXT

02-JUL-2015,04-JUL-2015
28-FEB-2016,02-MAR-2016
30-DEC-2013,01-JAN-2014
12-AUG-2012,14-AUG-2012

我尝试过以下命令和in-complete:

#!/usr/bin/gawk -f
BEGIN {FS=","}
{
    split($1,s,"-")
    split($2,e,"-")
    st=mktime(s[3] " "(index("JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC",s[2])+2)/3" " s[1] " 0 0 0")
    et=mktime(e[3] " "(index("JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC",e[2])+2)/3" " e[1] " 0 0 0")
    for (i=st;i<=et;i+=60*60*24) print strftime("%d-%b-%Y",i)
}

期望的输出:

02-JUL-2015
03-JUL-2015
04-JUL-2015
28-FEB-2016
29-FEB-2016
01-MAR-2016
02-MAR-2016
30-DEC-2013
31-DEC-2013
01-JAN-2014
12-AUG-2012
13-AUG-2012
14-AUG-2012

请建议!!!

1 个答案:

答案 0 :(得分:2)

print strftime("%d-%b-%Y",i)更改为print toupper(strftime("%d-%b-%Y",i))

获取由Arnold Robbins撰写的Effective Awk Programming,4th Edition。