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]++‘  以第一列去重复,默认输出重复的第一个值

时间: 2024-11-12 15:15:05

awk与sort去重复取最值的相关文章

Js数组去重复取唯一值

function isBigEnough(element) { return element >= 10; } var filtered = [12, 5, 8, 130, 44].filter(isBigEnough); // filtered is [12, 130, 44] function onlyUnique(value, index, self) { return self.indexOf(value) === index; } // usage example: var a = [

js数组操作 求最大值,最小值,正序、倒叙大小值排序,去重复

var arr = [1,5,2,56,12,34,21,3,5] Math.min.apply({},arr) // 1 Math.max.apply({},arr) // 56 arr.sort((m,n)=>m-n) // [1, 2, 3, 5, 5, 12, 21, 34, 56] arr.sort((m,n)=>n-m) //[56, 34, 21, 12, 5, 5, 3, 2, 1] 去重复 var arr = [2,1,4,3,2,4,2,3,4,2,6,5,5] var o

[爬虫学习笔记]基于 SimHash 的去重复处理模块ContentSeen的构建

      Internet上的一些站点常常存在着镜像网站(mirror),即两个网站的内容一样但网页对应的域名不同.这样会导致对同一份网页爬虫重复抓取多次.为了避免这种情况,对于每一份抓取到的网页,它首先需要进入ContentSeen模块.该模块会判断网页的内容是否和已下载过的某个网页的内容一致,如果一致,则该网页不会再被送去进行下一步的处理.这样的做法能够显著的降低爬虫需要下载的网页数.至于如果判断两个网页的内容是否一致,一般的思路是这样的:并不会去直接比较两个网页的内容,而是将网页的内容经

Oracle去重复,作用于多列

1 用distinct关键字只能过滤查询字段中所有记录相同的(记录集相同),而如果要指定一个字段却没有效果,另外distinct关键字会排序,效率很低 . 2 select distinct name from t1 能消除重复记录,但只能取一个字段,现在要同时取id,name这2个字段的值. 3 select distinct id,name from t1 可以取多个字段,但只能消除这2个字段值全部相同的记录 4 所以用distinct达不到想要的效果,用group by 可以解决这个问题.

C# List<T>中Select List Distinct()去重复

List<ModelJD> data = myDalJD.GetAllDataList(); List<string> list= new List<string>(); list= datalist4.Select(p => p.name).ToList(); //只取name字段,重新生成新的List集合 this.cmbJdUserName.DataSource = list.Distinct().ToList(); //去重复,绑定数据后面要加ToList

C# List&lt;T&gt;中Select List Distinct()去重复 摘抄自 随风% 随笔

List<ModelJD> data = myDalJD.GetAllDataList(); List<string> list= new List<string>();list= datalist4.Select(p => p.name).ToList();  //只取name字段,重新生成新的List集合this.cmbJdUserName.DataSource = list.Distinct().ToList(); //去重复,绑定数据后面要加ToList(

在android的spinner中,实现取VALUE值和TEXT值

为了实现在android的spinner实现取VALUE值和TEXT值,我尝试过好些办法,在网上查的资料,都是说修改适配器,刚开始我也是通过修改适配器的方法来做的,但是如果一个activity有多个spinner,就需要多声明几个适配器的全局变量.后面查看适配器的源码发现,其实没有必要修改适配器,直接往适配器里面传对象,然后重写对象的toString()方法就可以简单解决.闲话少说,贴代码: 先声明一个对象,并重写对象的toString(). public class CItem {     p

DataTable去重复方法

//去掉重复行 DataTable table=new DataTable(); DataView dv = table.DefaultView; table = dv.ToTable(true, new string[] { "name", "code" }); 此时table 就只有name.code无重复的两行了,如果还需要id值则 table = dv.ToTable(true, new string[] { "id","nam

使用Excel2007去重复功能时要注意的一个问题

作者:iamlaosong Excel2007有个去重复功能(菜单:数据----删除重复项),很有用,过去需要用VBA编程实现的功能,现在点击一下图标就行了.去重复一般是指定某列或者某几列,根据这指定的列将重复的删除. 需要注意的是,这个指定的列中的值虽然相同(重复),但未指定的列却不一定相同.删除重复是保留重复项的第一行,删除后续行,因此,最后的结果就和原始数据的排列有关系,不同的排列,虽然指定列留下来的内容是一样的,但非指定列保留下来的内容却有所不同.