今天同事问我一个问题. 模型是这样的集合A-集合B 用linux 怎么做.
集合A放在 data1 里边, 集合B 放在data2里边.
她开始的做法是 common -2 -3 data1 data2 看起来就是正常.
-2 suppress column 2 (lines unique to FILE2)
-3 suppress column 3 (lines that appear in both files)
-2:表示不输出第二列(只在FILE2中出现)
-3:表示不输出第三列(在FILE1 和FILE2 中都出现,就是 集合A和集合B的交集).
直接man comm 之后, 发现她发了一个简单的错误.
comm - compare two sorted files line by line
comm 要求文件必须是有序的. 建议她sort 一下之后,就得到她想要的结果.
这里在提供一种除了comm之外的去 集合A - 集合B的方法.
cat FILE1 FILE2 FILE2 | sort | uniq -u
原理很简单: FILE2 出现两次保证FILE2 中的元素肯定是重复的, 如果FILE1中的文件元素和FILE2同样的话
那么就会被 uniq -u 去除.
阅读(1765) | 评论(0) | 转发(0) |