linux 排序去重整理

sort  命令解释:

功能说明:将文本文件内容加以排序。

sort -u [file]  =  sort [file] | uniq (去重)

参数说明

-b 忽略每行前面开始出的空格字符

-c 检查文件是否已经按照顺序排序

-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符

-f  排序时,将小写字母视为大写字母

-l  排序时,除了040至176之间的ASCII字符外,忽略其他的字符

-m 将几个排序好的文件进行合并

-M 将前面3个字符依照月份的缩写进行排序

-n 依照数值的大小排序

-o<输出文件> 讲排序后的结果存入指定的文件

-r 以相反的顺序来排序

-t<分隔字符> 指定排序时所用的栏位分割字符

+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始兰位到结束栏位的前一栏位

--help 显示帮助

--version 显示版本信息

-u 对排序后认为相同的行只留其中一行

 

uniq  命令解释:

功能说明:检查及删除文本文件中重复出现的行列。

语法:uniq[选项] 文件

最重要参数  默认(去重)  |  -d(显重)   |   -u(删重)

参数

-c或--count 在每列旁边显示该行重复出现的次数

-d或--repeat 仅显示重复出现的行列

-f<栏位>或--skip-fields=<栏位> 忽略比较指定的栏位

-s<字符位置>或--skip-chars=<字符位置> 忽略比较指定的字符

-u或--unique 仅显示出一次的行列

-w<字符位置>或--check-chars<字符位置> 指定要比较的字符

--help 帮助信息

--version 版本信息

 

comm  命令详解:

功能说明:比较两个已排序的文件

语法: comm [-123][--help][--version][第一个文件][第二个文件]

补充说明:这项指令会一列列的比较两个已排序文件的差异,并将其结果显示出来。如果没有指定任何参数,则会把结果分成3行显示,第1行是仅在第一个文件中出现的列,第2行是仅在第二个文件中出现过的列,第3行则是在两个文件中都出现过的列。若给予的文件名称是"-",则comm指令会从标准输入设备中读取数据。

参数

-1 不显示在第1个文件中出现的列

-2 不显示在第2个文件中出现的列

-3 不显示只在第1或第2个文件中出现的列

选项1 2和3抑制相应的列显示,例如

comm -12 显示两个文件中都出现的行

comm -23 显示在第1个文件出现,而不是在第2个文件出现的行

comm -123 什么都不显示

 

注意

uniq    comm 命令需要使用已经排序好的内容才有意义。

注意文件格式要为unix

 

一些例子:

第一:两个文件的交集,并集

前提条件:两个文件不得有重复的行(即两个文件都要去重)

1. 取出两个文件的并集 cat file1 file2 | sort | uniq >file3

2. 取出两个文件的交集 cat file1 file2 | sort | uniq -d >file3

3. 删除交集 cat file1 file2 | sort |uniq -u <file3

第二:两个文件合并

1. 一个在上一个在下 cat file1 files2 >file3

2. 一个在左一个在右 paste file1 file2 >file3

第三:一个文件去掉重复行

1.  sort file | uniq 把重复的行合并为一行

2.  sort file | uniq -u 把重复的行删除,仅保留非重复的行

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页