需要awk阵列辅助 - 平均

时间:2010-08-18 18:58:43

标签: math awk average

以下是我尝试操作的数据类型示例:

1213954013615]: 992
1213954013615]: 993
1213954013615]: 994
1213954013615]: 995
1213954013615]: 995
1213954013615]: 996
1213954013615]: 996
1213954013615]: 996
1213954013615]: 998
1213954247424]: 100
1213954247424]: 1002
1213954247424]: 1007
1213954303390]: 111
1213954303390]: 1110
1213954303390]: 1111
1213954303390]: 1112
1213954303390]: 1114
1213954303390]: 112
1213954303390]: 112
1213954303390]: 112
1213954303390]: 112

......我希望实现的是根据左侧的纪元数生成平均值。例如,添加992,993,994,995,995,996,996,996,998并除以纪元时间“1213954013615”的唯一实例数,为每个唯一的纪元时间组执行此操作。

这是我到目前为止所做的:

awk '{arr[$1]+=$2} END {for (i in arr) {print "[epoch", i,arr[i]/NR}}'

但是,这当然除以纪元时代的总数,我需要相当于“uniq”的东西,但是在awk中找不到等价物。

非常感谢。

1 个答案:

答案 0 :(得分:3)

你几乎拥有它。它很容易计算单独数组 n 中每个纪元的实例数:

awk '{arr[$1]+=$2; ++n[$1]} END {for (i in arr) {print "[epoch", i,arr[i]/n[i]}}'