uniq

前言

  • 很多时候我们需要对数据去重,不管是少量数据还是大量数据,写代码进行去重终究没有使用系统功能直接操作文件方便,所以本文就介绍了一些关于uniq的使用方法

  • uniq单独使用

  • uniq配合sort实现文件去重

  • uniq配合sort实现文件之间的交集,并集,和差集

uniq单独使用

用法 :uniq [选项]… [文件]

注意

  • uniq去重时需要重复数据是相邻的,也就是说需要配合sort排序后去重,不相邻的重复数据是无法用uniq去重的

  • uniq去重后输出结果是直接输出到终端的,不对源文件进行去重删除,所以如果是对文件去重需要将用>将去重后的数据输入到新的文件中。

参数详解

  • c, --count 会显示该条重复数据重复了几次,数字在重复数据前

  • d, --repeated 只输出重复的行(配合-c使用)

  • D, --all-repeated 只输出重复的行,不过有几行输出几行,类似于吧重复的数据都拿出来然后排列后展示(这个就没法配合-c使用了)

  • f, --skip-fields=N 以行为方向,忽略该行的N个字符,与下一行比较,同时下面的行也是忽略该行的N个字符的

  • i, --ignore-case //不区分大小写

  • s, --skip-chars=N //根-f有点像,不过-s是忽略,后面多少个字符 -s 5就忽略后面5个字符

  • u, --unique //去除重复的后,全部显示出来,根mysql的distinct功能上有点像

  • z, --zero-terminated end lines with 0 byte, not newline

  • w, --check-chars=N //对每行第N 个字符以后的内容不作对照

  • 借用参考资料中的例子数据

"""
this is a test
this is a test
i am tank
i love tank
i love tank
this is a test
whom have a try
WhoM have a try
you  have a try
i want to abroad
those are good men
we are good men
"""

当直接使用时

  • 1 直接输出到命令窗口

  • 2 不相邻的重复数据是不会去重的,所以要搭配sort使用

搭配参数 -c

  • 此时只是统计了数据出现次数

搭配参数 -d

搭配参数 -d -c

搭配参数 -D

搭配参数 -f

搭配参数 -i / -u

-s / -w

  • -sb与-w都有-f比较容易理解,都是忽略部分字符去重不再试验

uniq配合sort实现文件去重

  • 相信上面其中的一个例子,使用uniq与sort搭配去重已经可以让人举一反三,所以此处不多赘述

  • 关于sort的参数详情可以参考本人另一个博客,搜索sort的用法(简写,不是特别详细,不要有很高的期望,毕竟sort直接用不加参数的时候最多,搭配uniq使用,重点也不是sort)

uniq配合sort实现文件之间的交集,并集,和差集

  • 如果上面两个方法已经掌握,该方法就是花活儿了,同上依旧略写

交集

sort a.txt b.txt | uniq -d

并集

sort a.txt b.txt | uniq

差集

a.txt-b.txt:

sort a.txt b.txt b.txt | uniq -u

b.txt - a.txt:

sort b.txt a.txt a.txt | uniq -u

  • 可能这一部分稍微抽象那么一丢丢,不过稍加理解就ok的

参考资料
1 本人sort总结:https://blog.csdn.net/Lian_Ge_Blog/article/details/123524961?spm=1001.2014.3001.5501
2 linux命令(12)uniq去重 - 细雨微光 - 博客园 (cnblogs.com)
3 Linux 两个文件求交集、并集、差集 - molong1208 - 博客园 (cnblogs.com)

Linux中uniq去重以及对两个文件取交集,并集,差集相关推荐

  1. ORAClE 两个表取交集,并集,差集

    这是我盗的 selct A.* from A UNION ALL/UNION/Intersect/MINUS select B.* from B; UNION ALL ---------------- ...

  2. jdk8两个List取交集、差集、并集(不去重)、并集(去重)

    jdk8两个List取交集.差集.并集(不去重).并集(去重) /*** 交集* @param list1* @param list2* @return*/private static List< ...

  3. 【Java】对两个Set取交集,差集,并集

    1.取交集(取两个集合中都存在的元素) HashSet<String> setA = new HashSet<>(); HashSet<String> setB = ...

  4. linux两个文件取交集、并集、差集

    如何得到两个文件的交集.并集和差集? 交集:两个文件中都出现的行 并集:两个文件中的所有行加起来,去掉重复 差集:在一个文件中存在,而在另一个文件中不存在. 比如以下两个文件: a.txt aaa b ...

  5. 利用shell求取两个文件的交集、差集、并集等

    求文件行数 cat a.txt | wc -l 交集 sort a.txt b.txt | uniq -d 并集 sort a.txt b.txt | uniq 差集 (1) a.txt-b.txt ...

  6. Python-两个列表取交集、并集、差集(编写了一个两个文件取交集的小工具)

    最近突然有个需求(取两个文件数据的交集),数据量非常大(2000多万行的数据),最开始的思路是先取一个文件所有的数据,保存成一个列表,然后判断是否在另一个文件中,花了十几分钟写出来后,一运行,差点崩溃 ...

  7. 两个list的交集并集差集

    昨天看了一本书,讲了更优雅的进行两个集合的并集.交集.差集等.比之前的那个stream流要好用. 1.并集 最正常的使用add方法. list1.addAll(list2); 注意:要是想要得到不重复 ...

  8. js寻找两个数组的差集_js求两个数组的交集|并集|差集|去重

    let a = [1,2,3], b= [2, 4, 5]; 1.差集 (a-b 差集:属于a但不属于b的集合)  a-b = [1,3] (b-a 差集:属于b但不属于a的集合)  b-a = [4 ...

  9. linux文件取交集、差集、并集

    # 交集 sort a.txt | uniq > aa.txt sort b.txt | uniq > bb.txt cat aa.txt bb.txt | sort | uniq -d ...

最新文章

  1. HDU - 1556 Color the ball(树状数组)
  2. 登录 googlecloud,链接数据库
  3. 关于[[NSNotificationCenter defaultCenter] addObserver不remove后续又收到通知crash问题
  4. java实现迷你计算机,用JAVA写一个迷你编辑器.doc
  5. spring environment_程序员:Spring项目中简单几步实现多个动态数据源切换
  6. Spring三种对象创建方式
  7. Github Star过万的阿里学长独家干货分享
  8. 如何搭建java web环境_搭建java WEB开发环境和应用
  9. 第2章[2.7] Ext JS数据模型与数据封装
  10. 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
  11. 怎么做java项目_作为一名初学Java者 如何做简单的Java项目
  12. css 左右居中和上下垂直居中
  13. LM74700-Q1
  14. Vue实现简单的音乐播放器
  15. C# 重载 Equals() 方法、重载运算符、声明显隐式转换的简要整理
  16. error LNK2005: _main already defined in xxxx.obj
  17. 华为OD机试用Python实现 -【寻找关键钥匙】 2023Q1A
  18. H3C交换机SSH登录配置
  19. android 日历事件添加日程
  20. GOM SCAN TRITOP Professional ATOS Professional GOM Inspect Professional 2016/2018/2020/2021

热门文章

  1. 开放数据库:共享杯版_前列腺肿瘤预警数据集
  2. shardingJdbc配置
  3. javaScript实现世界各地时间显示
  4. matlab常见分布的分布函数的命令,Matlab统计工具箱中各类概率分布函数使用方法介绍...
  5. Echarts-数据可视化
  6. bingo小游戏(圈圈叉叉小游戏)python
  7. UUID介绍与使用范围
  8. 奥特曼打小怪兽,赢了的和boss打
  9. 微信企业号信息接收服务器,微信企业号拟部署HTTPS协议,移步到微:早已升级...
  10. VMware虚拟机的网络模式设置详解(虚拟网络编辑器)