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

ksh sort first column and avg second column

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

例如:

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

寻找输出

aaaa 6.00
bbbb 7.7

像这样使用 awk:

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

如果要四舍五入,用printf。

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

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

对于排序结果,将输出通过管道传输到 sort (awk '{a[]+=;b[]++} END{for(i in a)print i,a[i]/b[i]}' File | sort)