ksh排序第一列和平均第二列

时间:2015-07-23 08:09:26

标签: sorting awk average ksh

寻找可以对包含2列的文件进行排序的awk或类似命令,然后在第2列中生成唯一列一个名称和总平均值的输出。

所以例如:

aaaa 11.5
aaaa 1.01
aaaa 5.50
bbbb 12.5
bbbb 1.10
bbbb 9.5

寻找输出

aaaa 6.00
bbbb 7.7

1 个答案:

答案 0 :(得分:0)

与awk一样:

awk '{a[$1]+=$2;b[$1]++} END{for(i in a)print i,a[i]/b[i]}' File
bbbb 7.7
aaaa 6.00333

如果要完善,请使用printf。

awk '{a[$1]+=$2;b[$1]++} END{for(i in a)printf("%s %.2f\n",i,a[i]/b[i])}' File

将第一个字段作为索引,更新数组a(加上第二个字​​段)。保持计数器b[first field]也已更新。最后,打印a的所有索引和平均值。希望很清楚。

对于排序结果,将输出传递给sortawk '{a[$1]+=$2;b[$1]++} END{for(i in a)print i,a[i]/b[i]}' File | sort

相关问题