comm命令简介
用法: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
加入元素
orange
gold
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