comm: 比較兩個已排序的文件
語法: comm [-123][--help][--version][第一個文件][第二個文件]
補充說明:這項指令會一列列的比較兩個已排序文件的差異,并將其結(jié)果顯示出來。如果沒有指定任何參數(shù),則會把結(jié)果分成3行顯示,第1行是僅在第一個文件中出現(xiàn)的列,第2行是僅在第二個文件中出現(xiàn)過的列,第3行則是在兩個文件中都出現(xiàn)過的列。若給予的文件名稱是"-",則comm指令會從標準輸入設(shè)備中讀取數(shù)據(jù)。
參數(shù):
-1 不顯示在第1個文件中出現(xiàn)的列
-2 不顯示在第2個文件中出現(xiàn)的列
-3 不顯示只在第1或第2個文件中出現(xiàn)的列
選項1 2和3抑制相應(yīng)的列顯示,例如
comm -12 顯示兩個文件中都出現(xiàn)的行
comm -23 顯示在第1個文件出現(xiàn),而不是在第2個文件出現(xiàn)的行
comm -123 什么都不顯示
一些例子:
第一:兩個文件的交集,并集
前提條件:兩個文件不得有重復(fù)的行(即兩個文件都要去重)
- 取出兩個文件的并集 cat file1 file2 | sort | uniq >file3
- 取出兩個文件的交集 cat file1 file2 | sort | uniq -d >file3
- 刪除交集 cat file1 file2 | sort | uniq -u < file3
第二:兩個文件合并
- 一個在上一個在下 cat file1 files2 >file3
- 一個在左一個在右 paste file1 file2 >file3
- cat file1 >> file2
第三:一個文件去掉重復(fù)行
- sort file | uniq 把重復(fù)的行合并為一行
- sort file | uniq -u 把重復(fù)的行刪除,僅保留非重復(fù)的行