Linux系统去除文本文件重复行(qq邮箱发邮件处理前)
编辑
背景
我们存在一个已发送的文件列表(每行都是一个qq邮箱),
一个垃圾的文件列表,包括发不出去的垃圾邮箱,可能由于对方没有开通qq邮箱等。
再加上此次需要的qq邮箱(1287)。
如何通过去重复得到此次实际需要发送的邮箱号列表,即不和之前的重复,1287个中去除已发送,去除垃圾后得到的文件。
解决方案
1.存放1287行qq号于word,保存编码为utf-8,文件名1.txt,
gab.txt 垃圾文件1032个
sended.txt 已发送8932个
2.去除本身的重复2.txt
命令:sort 1.txt| uniq > 2.txt
1286个
3.添加后缀为文件3.txt
命令:awk '{print $0 "@qq.com"}' 2.txt > 3.txt
这时vi 3.txt可以看到有^M标记,这是由于win和linux系统的编码不同导致
可以做替换
vi 3.txt
:%s/^M//g
去掉所有的^M标记,注意需要使用CTRL -V CTRL -M打出来,不能直接打出来
1286 substitutions on 1286 lines 删除完毕
:wq
保存退出
4.与已发送的交集文件
sort sended.txt 3.txt | uniq -d > 4.txt
184个
去除
sort 3.txt 4.txt 4.txt | uniq -u > 5.txt
1102个
5.与垃圾的交集文件
sort 5.txt gab.txt | uniq -d > 6.txt
54个
去除
sort 5.txt 6.txt 6.txt | uniq -u > 7.txt
1048个
6.梳理
最初的1287,重复1个,已发送184个,垃圾54个
1287-1-184-54=1048个
完美解决。
- 0
- 0
-
赞助
支付宝
微信
-
分享