首页 > 解决方案 > 按小时计算列中的值并添加标题

问题描述

在第 3 列中,值是小时,我想打印从 0 到 23 小时的标题,并在第 3 列中计算小时重复的时间。如果没有找到 hr 的值,则打印 0。

输入文件

123 3 3
122 3 3
122 4 4
122 3 4
122 4 4
122 5 5
122 3 12
122 4 15
122 5 20
122 5 20

所需输出

第一行 = 标题 0 到 23 小时,由

第二行 = 为每个小时找到的值。如果没有找到值,则打印 0。

0,1,2,3,4,5,6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22,23
0,0,0,2,3,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,2,0,0,0

按小时计算,我试过了

awk '{a[$3]++} END {for(i in a) print i, a[i]}'

提前致谢。

标签: awk

解决方案


其他awk

$ awk '{a[$3]++} 
    END{while(i<24) 
          {h1=h1 s i+0; 
           h2=h2 s a[i++]+0; 
           s=","} 
        print h1 ORS h2}' file

0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
0,0,0,2,3,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,2,0,0,0

附言。看起来像是@JamesBrown 答案的变体。


推荐阅读