awk - 按小时计算列中的值并添加标题
问题描述
在第 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 '{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 答案的变体。
推荐阅读
- swift - 我们如何以编程方式改变图像的约束?
- authentication - 验证独特的人类身份
- r - 如何通过拆分元素将名称设置为向量?
- node.js - Firebase 数据库访问问题:客户端无权访问所需数据
- python - 如何判断 jupyter notebook 中的函数来自哪里?
- python - 如何在python中按关键字对数据列表进行分类?
- python-3.x - 脚本在 IDE 中工作,但从终端运行时不起作用 - PyQt5,Ubuntu 14.04
- firebase - W/BiChannelGoogleApi:[FirebaseAuth:] getGoogleApiForMethod() 返回 Gms:com.google.firebase.auth.api.internal
- r - 如何在 R 中返回具有相同最小值或最大值的多行?(现在它只选择一个)
- c - 编写一个宏,以便在测试时禁用静态