Linux系统sort和uniq命令联合使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统sort和uniq命令联合使用相关的知识,希望对你有一定的参考价值。

参考技术A 给定两个文件 a.txt 和 b.txt ,每行是一个记录(假设没有重复),要求输出两集合的交集、并集、差集,输出的结果只包括唯一项。

交集定义为同时出现在两个文件中的记录项;

并集定义为出现在任何一个文件中的记录项;

差集( A-B )定义为出现在A中而且不出现在B中的记录;

对称差集定义为只出现在一个文件中的记录;

假设 a.txt 包括 a, c, b 三行。假设 b.txt 包括 d, e, c, b 四行。

交集 ,把两个文件放到一起排序,只输出次数多于一次的项:

$ sort a.txt b.txt | uniq -d

并集 ,把两个文件放到一起排序,重复的项只算一次:

$ sort a.txt b.txt | uniq

差集(A-B) ,把B的元素重复2份和A的元素放到一起排序,只输出出现一次的项:

$ sort a.txt b.txt b.txt | uniq -u

对称差 ,把两个文件放到一起排序,只输出出现一次的项:

$ sort a.txt b.txt | uniq -u

指定分隔符(-t)及基于哪一列(-k)、基于数值(-n) 、逆序(-r)进行排序

#排序之后删除了重复行,同时在行首位置输出该行重复的次数:

执行命令:sort testfile | uniq -c ,输出结果如下

#仅显示存在重复的行,并在行首显示该行重复的次数:

执行命令:sort testfile | uniq -dc,输出结果如下

#仅显示没有重复的行:

执行命令:sort testfile | uniq -u,输出结果如下

linux命令, cut,sort,wc,uniq,tee 说明

 cut :截取某一个字段

语法:cut -d “分隔字符” [-cf] n 这里的n是数字

-d :后面跟分隔字符,分隔字符要用双引号括起来

-c :后面接的是第几个字符

-f :后面接的是第几个区块

-d 后面跟分隔字符,这里使用冒号作为分割字符,-f 1 就是截取第一段,-f和1之间的空格可有可无。

-c 后面可以是1个数字n,也可以是一个区间n1-n2,还可以是多个数字n1,n2,n3

 

 sort :用做排序

语法:sort [-t 分隔符] [-kn1,n2] [-nru] 这里的n1 < n2

-t 分隔符 :作用跟cut的-d一个意思

-n :使用纯数字排序

-r :反向排序

-u :去重复

-kn1,n2 :由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序

 

wc :统计文档的行数、字符数、词数,常用的选项为:

-l :统计行数

-m :统计字符数

-w :统计词数

 

uniq :去重复的行,笔者常用的选项只有一个:

-c :统计重复的行数,并把行数写在前面

有一点需要注意,在进行uniq之前,需要先用sort排序然后才能uniq,否则你将得不到你想要的,笔者上面的试验当中已经是排序过所以省略掉那步了。

 

tee :后跟文件名,类似与重定向”>”,但是比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上。

 

以上是关于Linux系统sort和uniq命令联合使用的主要内容,如果未能解决你的问题,请参考以下文章

Linux 排序命令之 sort, wc, uniq

linux变量cut_sort_wc_uniq_tee_tr_split 命令使用方法

Linux 去重 先sort再uniq

linux sort,uniq,cut,wc命令详解

Linux中cut,sort,uniq和wc的用法

linux sort uniq命令详解