linux 中根据列的不同类别输出指定列的最小值、最大值以及平均值
001、最大值和最小值
[root@PC1 test03]# ls a.txt [root@PC1 test03]# cat a.txt ## 测试数据 a 6 a 9 a 7 b 5 b 10 b 5 b 9 c 5 c 3 c 4 c 1 ## 根据第一列输出最大值 [root@PC1 test03]# awk '{if(ay[$1] == "") {ay[$1] = $2}; if(ay[$1] < $2) {ay[$1] = $2}} END {for(i in ay) {print i, ay[i]}}' a.txt a 9 b 10 c 5 ## 根据第一列输出最小值 [root@PC1 test03]# awk '{if(ay[$1] == "") {ay[$1] = $2}; if(ay[$1] > $2) {ay[$1] = $2}} END {for(i in ay) {print i, ay[i]}}' a.txt a 6 b 5 c 1
002、输出平均值
[root@PC1 test03]# ls a.txt [root@PC1 test03]# cat a.txt ## 测试数据 a 6 a 9 a 7 b 5 b 10 b 5 b 9 c 5 c 3 c 4 c 1 ## 按照第一列输出平均值 [root@PC1 test03]# awk '{ay1[$1] += $2; ay2[$1] += 1} END {for(i in ay2) {print i, ay1[i]/ay2[i]}}' a.txt a 7.33333 b 7.25 c 3.25