首页 > 代码库 > awk与sort去重复取最值

awk与sort去重复取最值

文件a内容:

1     34
1     23
1     12
2     54
2     21
3     54
3     32
3     21
4     65
4     12
5     234
5     65
5     12

想从文件a中得到第一列重复值中对应第二列的最大值和最小值。即:

最大值

1     34
2     54
3     54
4     65
5     234

最小值

1     12
2     21
3     21
4     12
5     12

一句程序的写法:

1、得到最大值:sort -s -k1n -k2nr a | awk ‘!a[$1]++‘

2、得到最小值:sort -s -k1n -k2n a | awk ‘!a[$1]++‘

解析:

sort命令作用是排序,参数:

-s, --stable   禁用last-resort 比较以稳定比较算法    #这里可以不使用这个参数

-k, --key=位置1[,位置2] 在位置1 开始一个key,在位置2 终止(默认为行尾)  

-n, --numeric-sort  根据字符串数值比较

-r, --reverse   逆序输出排序结果    #默认增序排列输出

awk ‘!a[$1]++‘  以第一列去重复,默认输出重复的第一个值

本文出自 “1058223494” 博客,请务必保留此出处http://4708705.blog.51cto.com/4698705/1545536

awk与sort去重复取最值