前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux去重,实现类似mysql的distinct的功能

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

原创
作者头像
bosh123
修改2021-01-18 18:01:18
2.7K0
修改2021-01-18 18:01:18
举报
文章被收录于专栏:my notebookmy notebook

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

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

代码语言:javascript
复制
9589,860122@qq.com,1,1,2015-04-08 15:31:07.763000000,陕西省咸阳市,qq.com,59590,4605708@qq.com,1,1,2015-04-08 15:31:07.763000000,广东省深圳市,qq.com,59591,3307150@qq.com,1,1,2015-04-08 15:31:07.763000000,浙江省杭州市,qq.com,59592,1378747@qq.com,1,1,2015-04-08 15:31:07.763000000,四川省达州市,qq.com,5

命令1:

代码语言:javascript
复制
#获得去重后的结果
cat test.txt| awk '{print $2}' | sort |uniq

#只显示重复的列
cat 001.csv | awk -F ";" '{print $2}' | sort | uniq -d
#多个字段作为主键,去重
cat 001.csv | awk -F ";" '{print $1"-"$2}' | sort | uniq -d

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

命令2:

代码语言:javascript
复制
cat test.txt| awk -F "," '{print $2}' | sort |uniq >> all.txt

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

命令3:

代码语言:javascript
复制
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:

代码语言:javascript
复制
sed -i '/000/d' all.txt

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

命令5:

代码语言:javascript
复制
awk 'BEGIN{srand()}{b[rand()NR]=$0}END{for(x in b)print b[x]}' all.txt

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档