linux 中根据列的不同类别输出指定列的最小值、最大值以及平均值

发布时间 2023-07-05 08:40:45作者: 小鲨鱼2018

 

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