暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

聂扬帆博客 2016-11-16
236

本文拿了一份邮箱地址做测试,想要对地址进行去重。打开文件一看,好几列。有逗号区分也有空格区分。

9589,860122@qq.com,1,1,2015-04-08 15:31:07.763000000,陕西省咸阳市,qq.com,5

9590,4605708@qq.com,1,1,2015-04-08 15:31:07.763000000,广东省深圳市,qq.com,5

9591,3307150@qq.com,1,1,2015-04-08 15:31:07.763000000,浙江省杭州市,qq.com,5

9592,1378747@qq.com,1,1,2015-04-08 15:31:07.763000000,四川省达州市,qq.com,5

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

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

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

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

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

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

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

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

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

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

文章转载自聂扬帆博客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论