通过sort/uniq获取文件内容的交集、合集和不同之处
2013-07-02通过sort/uniq获取文件内容的交集、合集和不同之处:假设有a、b两个文本文件,文件本身已经去除了重复内容。下面是效率最高的方法,可以处理任何体积的文件,甚至几个G的文件。(Sort对内存没有要求,但也许你需要用 -T 参数。)可以试着比较一下,你可以看看如果用Java来处理磁盘上文件的合并,需要用多少行代码。
cat a b | sort | uniq > c # c 是a和b的合集
cat a b | sort | uniq -d > c # c 是a和b的交集
cat a b | sort | uniq -u > c # c 是a和b的不同
举例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
[root@AY130114114632f8b2978 ~]# cat a a b c d [root@AY130114114632f8b2978 ~]# cat b d m c e a [root@AY130114114632f8b2978 ~]# cat a b | sort a a b c c d d e m [root@AY130114114632f8b2978 ~]# cat a b | sort | uniq -d a c d |
补充,用comm命令也可以实现类似效果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[root@AY130114114632f8b2978 ~]# sort b > b.s [root@AY130114114632f8b2978 ~]# comm b.s a a b c d e m [root@AY130114114632f8b2978 ~]# comm -2 b.s a a c d e m [root@AY130114114632f8b2978 ~]# comm -12 b.s a a c d |
发表评论