寻找可以对包含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
答案 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
的所有索引和平均值。希望很清楚。
对于排序结果,将输出传递给sort
(awk '{a[$1]+=$2;b[$1]++} END{for(i in a)print i,a[i]/b[i]}' File | sort
)