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
3. cat file1 >> file2
第三:一个文件去掉重复行
1. sort file | uniq 把重复的行合并为一行
2. sort file | uniq -u 把重复的行删除,仅保留非重复的行