comm命令

2016-05-05  本文已影响211人  大明白

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 什么都不显示

一些例子:

第一:两个文件的交集,并集
前提条件:两个文件不得有重复的行(即两个文件都要去重)

  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 把重复的行删除,仅保留非重复的行
上一篇下一篇

猜你喜欢

热点阅读