本篇介绍uniq命令,uniq也是linux管道命令家族中的一员,其主要功能是去除重复项。

在介绍uniq命令之前,我们先来新建在下面的案例中需要用到的文件/tmp/uniq.txt,内容如下

默认情况下uniq只会检索相邻的重复数据从而去重。在/tmp/uniq.txt中虽然“onmpw web site” 有三条,但是其中一条是和其他两条不相邻的,所以只去重了一条,同理“error php function”也是这种情况。

鉴于以上的检索机制,所以uniq一般情况下要和sort命令一块儿使用。

# sort 1.txt |uniq

alpha css web

cat linux command

error php function

hello world

onmpw web site

recruise page site

repeat no data

wello web site

现在再看是不是所有的重复项都已经经过去重处理了。

好了,小试牛刀一把以后,下面我们开始对uniq命令的选项进行简单的介绍。

-c 统计每一行数据的重复次数

sort 1.txt | uniq -c1alpha css web1cat linux command2error php function1hello world3onmpw web site1recruise page site1repeat no data1 wello web site

我们看 “error php function”出现了两次,“onmpw web site”出现了三次。其余的都没有重复项所以为1。

-i 忽略大小写

在1.txt中添加一行数据 “Error PHP function”

cat 1.txt

alpha css web

cat linux command

error php function

hello world

onmpw web site

onmpw web site

wello web site

Error PHP function

recruise page site

error php function

repeat no data

onmpw web site

sort 1.txt |uniq –c1alpha css web1cat linux command2error php function1Error PHP function1hello world3onmpw web site1recruise page site1repeat no data1 wello web site

我们看结果,uniq默认是区分大小写的。使用-i可以忽略掉大小写问题

sort 1.txt |uniq –c –i1alpha css web1cat linux command3error php function1hello world3onmpw web site1recruise page site1repeat no data1 wello web site

现在再看是不是大小写已经忽略掉了。

-u 只输出没有重复的数据

sort 1.txt |uniq –iu

alpha css web

cat linux command

hello world

recruise page site

repeat no data

wello web site

看到没,结果中的“error php function”和“onmpw web site”都没有被输出。

-w N 表示从第一个字符开始只检索N个字符来判重。

sort 1.txt | uniq –iw 2

alpha css webcat linux commanderror php functionhello worldonmpw web siterecruise page sitewello web site

这里我们让uniq只对前两个字符进行检索,recruit 和 repeat前两个字符都是re,所以这两行也被认为是重复的。

-f N 表示略过前面N个字段,从第N+1个字段开始检索重复数据。以空格符或者tab键为分隔符。

sort 1.txt | uniq –icf 2

1alpha css web1cat linux command3error php function1hello world4onmpw web site1repeat no data1 wello web site

我们在结果中可以看到,这是略过前面的2个字段,从第三个字段开始判重的。“recruise page site” 和 “onmpw web site”的第三个字段相同,所以被认为是相同的数据。但是我们看到,“wello web site”和“onmpw web site”不但第三个字段相同,第二个也相同。那为什么它不被计入“onmpw web site”的重复数据中呢。对于这个问题就要回到前面说的,uniq只检测相邻的数据是否是重复的。

要解决这个问题还需要在sort命令上着手。还记得sort命令的-k选项吗,没错,我们就用它来解决。

sort –k 2 1.txt | uniq –icf 2

1alpha css web1cat linux command1repeat no data1recruise page site3error php function4onmpw web site1 hello world

我们看,是不是解决了。

-s N表示略过前面N个字符,关于这个选项的例子我们这里就不再举了,该选项和-f N的用法差不多。只不过-f N是略过前面N个字段;-s是略过前面N个字符。

-d 只输出有重复项的第一条的数据。

sort 1.txt | uniq -idw 2repeat no data

error php function

onmpw web site

结果只有这三条。为什么会有“repeat no data”这条数据,这里注意-w 2的应用。

-D 对于重复项全部输出

sort 1.txt | uniq –iDw 2repeat no data

recruise page site

error php function

error php function

Error PHP function

onmpw web site

onmpw web site

onmpw web site

好了,关于uniq的选项的所有常用的命令已经都介绍完了。关于uniq更详细的信息可以使用命令info uniq。

希望本文对大家有所帮助。

linux去除重复字符,Linux去除重复项命令uniq相关推荐

  1. linux bmp添加字符,linux 将数字符号画到BMP图片上

    首先我本先了解一下BMP图片的格式. BMP文件主要分为如下4个部分: 块名称 对应Windows结构体定义                                               ...

  2. linux遇到nul字符,linux TXT文件操作 '^@ ' 'NUL' 符号乱码问题

    项目需求需要向TXT文件中写分钟数据, 也就是一分钟写一次, 一次一帧数据 ,一帧数据一行. 下面简单的贴下自己测试时的代码,  AWS_MIN1_DATA是一分钟数据结构体 (memset(& ...

  3. Linux下的字符处理命令之tr命令详解

    1.什么是tr命令: tr是translate的简写,通过这个单词,你大概也能猜到它是干什么的了吧!没错,它可以用一个字符串来替换另一个字符串,或者可以完全除去一些字符.您也可以用它来除去重复字符. ...

  4. python重复字符串n次的函数_LeetCode_Python(3)_无重复字符的最长子串

    需求 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc ...

  5. linux排列去重复的命令,实例详细说明linux下去除重复行命令uniq

    一,uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个.使用uniq的时候要注意以下二点 1,对文本操 ...

  6. linux去除文件中重复行,Linux Shell教程 - 如何删除重复的文本行

    需要对日志文件中的数据进行排序,但是有太多重复的行. 如何从GNU/Linux下的文本文件中删除所有重复的行? 您需要使用shell管道以及以下两个Linux命令行实用程序来排序和删除重复的文本行: ...

  7. php消除连续字符,JS字符串去除连续或全部重复字符的实例

    这篇文章主要介绍了JS字符串去除连续或全部重复字符的实例,需要的朋友可以参考下 js字符串去除连续重复字符 ()和\number 配合使用表示重复正则第number个括号内匹配到的内容,如:(\d)\ ...

  8. [华为机试真题][2014]62.去除重复字符并排序

    题目 描述: 去除重复字符并排序 运行时间限制: 无限制 内容限制: 无限制 输入: 字符串 输出: 去除重复字符并排序的字符串 样例输入: aabcdefff 样例输出: abcdef 代码 /*- ...

  9. php二维数组拆分成字符串,PHP二维数组切割为字符串并去除重复的值

    本篇文章的内容是关于PHP二维数组切割为字符串并去除重复的值 的代码,现在分享给大家,有需要的朋友可以参考一下 应用场景在于需要查询出某一个rent_contract_id所有有关的id及rent_c ...

最新文章

  1. 《javascript模式》 容易踩中的那些坑
  2. Android 学习笔记
  3. Springboot 抛出Failed to determine a suitable driver class异常原因
  4. Java HashMap 核心源码解读
  5. 存储过程实现无限级分类(3)
  6. NOIP 2017 时间复杂度 (模拟)
  7. Pytorch 自定义激活函数前向与反向传播 Tanh
  8. php网站的编辑器,5款适合PHP使用的HTML编辑器推荐
  9. 再谈Windows 2000安全技术
  10. axios拦截器_请求拦截器_响应拦截器---axios工作笔记010
  11. python安装不了怎么办_python安装运行时提示不是内部或外部命令怎么办
  12. Modbus RTU CRC校验码计算方法
  13. Android生成签名文件对应用签名 Android签名作用
  14. 服务器安装虚拟声卡,虚拟声卡安装使用 虚拟声卡注意事项
  15. 各类软件激活码(更新中)
  16. TCP/IP协议及常见状态码(SYN,FIN,ACK,PSH,RST)
  17. vscode英文界面转换为中文界面
  18. Chuck语言学习笔记——4.复数,四则运算与类型转换
  19. 两行命令查看wifi密码
  20. 让图片说出声音来(利用讯飞API实现图片转文字和文字转语音)

热门文章

  1. Neutron DHCP-Agent问题分析定位(2)
  2. php第三方阿里云接口
  3. 北航计算机学院编译,北航计算机学院编译习题讲解.pdf
  4. 小学老师如何与不同性格的家长沟通?
  5. python用来占位的关键字_python-study/Readme.md at master · wchhuangya/python-study · GitHub
  6. 微信小程序——分割线
  7. Atracsys FusionTrack 500 光学测量系统
  8. JVM内存模型与内存溢出异常
  9. 使用lap.lapjv实现线性分配(我主要用来作为匈牙利算法的实现)
  10. 哪个省才是高考地狱模式?有你的省吗?