使用awk自动增加变量

时间:2017-04-12 03:50:35

标签: awk

我正在尝试计算时间段之间的记录数。

doa
19560227
19560429
19571001
19571201
19580301
.
.
.
.
20170327
20170401

时间段介于日历之间,如

19560101 to 19561231
19570101 to 19571231
.
.
.
20170101 to 20171231

每当日期改变时,它应该增加变量。 我尝试使用以下代码但无法获得结果。

awk '{
  doa=$1
  cnt=1956

  for (i=19560101; i<=20171231; i=i+10000){
    if(doa >=i && doa <= i+1130){year${cnt}+=1}
  }

  print year${cnt}
  cnt+=1
}'

请帮忙。

1 个答案:

答案 0 :(得分:0)

喜欢这个?:

$ awk '{a[substr($i,1,4)]++}END{for(i in a) print i, a[i]}' file
1956 2
doa 1
. 4
1957 2
1958 1
2017 2

由于范围是日历年,是否足以计算年数?如果没有,请参阅下面的评论。

如果要输出整个范围,请在print

中输入
print i "0101 to " i "1231", a[i]

输出

19560101 to 19561231 2
...