2010-08-18 102 views
2

下面是数据的,我试图操纵类型的例子:需要在awk数组援助 - 平均

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中的等价物。

非常感谢。

回答

3

你几乎拥有它。其易算每历元的实例的数量在一个单独的阵列Ñ

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

有史以来最快的响应。精彩的工作。感谢schot! – 2010-08-18 19:06:35

+0

@Jimjim我只需要添加几个字符到你自己的解决方案,很高兴成为帮助。 – schot 2010-08-18 19:18:24

+0

@Jimjim,你应该考虑接受这个答案,如果它适合你。 – 2010-08-18 19:45:51