用法:comm [選項]... 檔案1 檔案2
逐行比較已排序的檔案檔案1 和檔案2。
如果不附帶選項,程式會生成三列輸出。第一列包含檔案1 特有的行,第二列包含 檔案2 特有的行,而第三列包含兩個檔案共有的行。
① -1 不輸出檔案1 特有的行
② -2 不輸出檔案2 特有的行
③ -3 不輸出兩個檔案共有的行
--check-order 檢查輸入是否被正确排序,即使所有輸入行均成對
--nocheck-order 不檢查輸入是否被正确排序
--output-delimiter=STR 依照STR 分列
解讀:
1. --check-order
指令預設。如果希望不檢驗排序,可以--nocheck-order。
2. --output-delimiter=STR
STR 就是個表達式;可以是任何非特殊字元。
3. 參數可以混用
-1,-2
可以寫成 -12 與普通指令用起來一樣
執行個體:
1.建立A.txt
加入元素
apple
orange
gold
silver
steel
iron
2. 建立B.txt
cookies
carrot
可以嘗試直接比較: comm A.txt B.txt
你會發現提示一個錯誤,沒有排序。
3. 排序
sort A.txt -o A.txt; sort B.txt -o B.txt
4. 比較
$comm A.txt B.txt
結果實際為3列 其中第一列是檔案1特有 -1表示删除第一列
第二列是檔案2特有的 -2代表删除第二列
第三列代表共同有的 -3代表删除共有的列
4.1 列印交集:
$comm -12 A.txt B.txt
4.2 列印兩個檔案中不同的行
$comm -3 A.txt B.txt
補充個小修改,兩列不好看,用sed删除行首的\t
$comm –3 A.txt B.txt | sed 's/^\t//'
原文
http://www.16kan.com/post/195690.html