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
计算两个文件的差集
作者:WadeYu
出处:http://www.cnblogs.com/wadeyu/
本文版权归本人和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/wadeyu/
本文版权归本人和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
![](https://images2015.cnblogs.com/blog/415902/201610/415902-20161005185204582-1267304708.jpg)