获取交集
cat a.txt b.txt | sort | uniq -d >
./comm.txt
comm -12
b.txt|uniq ) >
./comm.txt 共同的交集
获取差
cat a.txt b.txt | sort | uniq -u >
./diff.txt 写入a.txt和b.txt所有 不同的元素 相同元素不写入
注意顺序很重要!
$ grep -F -v -f a.txt b.txt | sort | uniq > ./diff.txt
B-A 写入b.txt的不同元素 相同元素不写入
$ grep -F -v -f b.txt a.txt | sort | uniq
>
./diff.txt A-B 写入a.txt的不同元素 相同元素不写入
==========================================================
运营提了个导数据的需求,需要把某段时间登陆用户id导出来,由于数据量大,分了多个文
件保存。数据保存格式,每一行一个用户id。刚开始打算用数据,由于数据量大,就放弃了,存数据库去重,取数据交集差集比较方便,比如在A时间登陆了B时
间没有登陆的用户(差集)。Linux下有操作文件的命令,而且功能也很强大。下面是我的备注(经我整理,来源于互联网):
ls ./lc* | xargs -t -i sort {} -o {}
当前目录以lc开头的文件批量排序,结果保存到原文件中
ls ./lc* | xargs -t -i uniq {} ./uniq/{}
当前目录以lc开头的文件批量去重,结果保存到与原文件名相同uniq目录下
cat lcUsrLoginData20120601.txt lcUsrLoginData20120616.txt | sort
| uniq > ../month/lcUsrLoginData201206.txt
合并当前目录下两文件并排序并去重,结果保存到当前目录的父目录的子目录month中
cat a.txt b.txt | sort | uniq -d | wc -l
comm -12 a.txt b.txt | wc -l
计算两个文件交集元素个数(为什么最后是换行符才行?)
cat a.txt b.txt | sort | uniq -d > temp.txt
cat a.txt temp.txt | sort | uniq -u > diff.txt
计算两个文件的差集