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

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

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

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:

#获得去重后的结果
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:

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文件中的行

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值