Linux中 awk命令输出一列多个类别中 每个类别中最大的项或者最小的项

 

001、 输出最大项

(base) [b20223040323@admin1 test]$ ls
a.txt
(base) [b20223040323@admin1 test]$ cat a.txt        ## 测试数据
a 88
a 76
b 88
c 10
b 777
c 200
a 87
c 150
a 34
b 25
a 66                               ## 输出第一列中每一类别中值最大的项
(base) [b20223040323@admin1 test]$ awk '{if (!($1 in ay)) {ay[$1] = $2}else{if($2 > ay[$1]){ay[$1] = $2}}}END {for (i in ay) {print i, ay[i]}}' a.txt
a 88
b 777
c 200

 

002、输出最小项

[root@pc1 test1]# ls
a.txt
[root@pc1 test1]# cat a.txt   ## 测试数据
a       88
a       76
b       88
c       10
b       777
c       200
a       87
c       150
a       34
b       25
a       66               ## 提取程序
[root@pc1 test1]# awk '{if(!($1 in ay)){ay[$1] = $2} else {if($2 < ay[$1]){ay[$1] = $2}}} END {for(i in ay) {print i, ay[i]}}' a.txt
a 34
b 25
c 10

 。

 

posted @ 2024-01-31 16:42  小鲨鱼2018  阅读(7)  评论(0编辑  收藏  举报