Linux下文件排序去重取交集差集

运营提了个导数据的需求,需要把某段时间登陆用户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
计算两个文件的差集

原文地址:https://www.cnblogs.com/wadeyu/p/2769802.html