Linux去重,实现类似mysql的distinct的功能

拿了一份邮箱地址,想要对地址进行去重。

打开文件一看,好几列。有逗号区分也有空格区分

9589,[email protected],1,1,2015-04-08 15:31:07.763000000,陕西省咸阳市,qq.com,5
9590,[email protected],1,1,2015-04-08 15:31:07.763000000,广东省深圳市,qq.com,5
9591,[email protected],1,1,2015-04-08 15:31:07.763000000,浙江省杭州市,qq.com,5
9592,[email protected],1,1,2015-04-08 15:31:07.763000000,四川省达州市,qq.com,5

命令1:

cat test.txt| awk '{print $2}' | sort |uniq

按空格区分进行去重,所以得出的是15:31:07.763000000,陕西省咸阳市,qq.com,5这后半部分。

命令2:

cat test.txt| awk -F "," '{print $2}' | sort |uniq >> all.txt

按逗号区分,筛选出第2列,并将结果导入新的文件中

命令3:

awk '{print $1}' all.txt |grep -v "qq.com" | grep -v "163.com" |grep -v "sina.com" | uniq | sort -n

排除文件中包含qq.com,163.com,sina.com的行

命令4:

sed -i '/000/d' all.txt

删除all.txt文件中包含"000"的行

命令5:

awk 'BEGIN{srand()}{b[rand()NR]=$0}END{for(x in b)print b[x]}' all.txt

随机乱序all.txt文件中的行

weinxin
聂扬帆博客
一个分享IT运维相关工作经验和实战技巧的个人博客

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

  1. avatar 暮云 4

    写的不错