`

实例详细说明linux下去除重复行命令uniq

 
阅读更多
 

一,uniq干什么用的

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

1,对文本操作时,它一般会和sort命令进行组合使用,因为uniq 不会检查重复的行,除非它们是相邻的行。如果您想先对输入排序,使用sort -u。

2,对文本操作时,若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中字符前的空字符将被跳过

二,uniq参数说明

1.[zhangy@BlackGhost ~]$ uniq --help 
2.用法:uniq [选项]... [文件] 
3.从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。 
4.不附加任何选项时匹配行将在首次出现处被合并。 
5.长选项必须使用的参数对于短选项时也是必需使用的。 
6. -c, --count //在每行前加上表示相应行目出现次数的前缀编号 
7. -d, --repeated //只输出重复的行 
8. -D, --all-repeated //只输出重复的行,不过有几行输出几行 
9. -f, --skip-fields=N //-f 忽略的段数,-f 1 忽略第一段 
10. -i, --ignore-case //不区分大小写 
11. -s, --skip-chars=N //根-f有点像,不过-s是忽略,后面多少个字符 -s 5就忽略后面5个字符 
12. -u, --unique //去除重复的后,全部显示出来,根mysql的distinct功能上有点像 
13. -z, --zero-terminated end lines with 0 byte, not newline 
14. -w, --check-chars=N //对每行第N 个字符以后的内容不作对照 
15. --help //显示此帮助信息并退出 
16. --version //显示版本信息并退出 
 

 

[zhangy@BlackGhost ~]$ uniq --help
用法:uniq [选项]... [文件]
从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。

不附加任何选项时匹配行将在首次出现处被合并。

长选项必须使用的参数对于短选项时也是必需使用的。
 -c, --count              //在每行前加上表示相应行目出现次数的前缀编号
 -d, --repeated          //只输出重复的行
 -D, --all-repeated      //只输出重复的行,不过有几行输出几行
 -f, --skip-fields=N     //-f 忽略的段数,-f 1 忽略第一段
 -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 个字符以后的内容不作对照
 --help              //显示此帮助信息并退出
 --version              //显示版本信息并退出

三,测试文本文件uniqtest

this is a test

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.[zhangy@BlackGhost mytest]$ uniq -c uniqtest 
2. 3 this is a test 
3. 1 i am tank 
4. 2 i love tank 
5. 1 this is a test //和第一行是重复的 
6. 1 whom have a try 
7. 1 WhoM have a try 
8. 1 you have a try 
9. 1 i want to abroad 
10. 1 those are good men 
11. 1 we are good men 

 

[zhangy@BlackGhost mytest]$ uniq -c uniqtest
 3 this is a test
 1 i am tank
 2 i love tank
 1 this is a test           //和第一行是重复的
 1 whom have a try
 1 WhoM have a try
 1 you  have a try
 1 i want to abroad
 1 those are good men
 1 we are good men

从上例子中我们可以看出,uniq的一个特性,检查重复行的时候,只会检查相邻的行。重复数据,肯定有很多不是相邻在一起的。

1.[zhangy@BlackGhost mytest]$ sort uniqtest |uniq -c 
2. 1 WhoM have a try 
3. 1 i am tank 
4. 2 i love tank 
5. 1 i want to abroad 
6. 4 this is a test 
7. 1 those are good men 
8. 1 we are good men 
9. 1 whom have a try 
10. 1 you have a try 
 
[zhangy@BlackGhost mytest]$ sort uniqtest |uniq -c   
 1 WhoM have a try   
 1 i am tank   
 2 i love tank   
 1 i want to abroad   
 4 this is a test   
 1 those are good men   
 1 we are good men   
 1 whom have a try   
 1 you  have a try

这样就可以解决上个例子中提到的问题

  1. [zhangy@BlackGhost mytest]$ uniq -d -c uniqtest
  2. 3 this is a test
  3. 2 i love tank
[zhangy@BlackGhost mytest]$ uniq -d -c uniqtest   
 3 this is a test   
 2 i love tank  

uniq -d 只显示重复的行

  1. [zhangy@BlackGhost mytest]$ uniq -D uniqtest
  2. this is a test
  3. this is a test
  4. this is a test
  5. i love tank
  6. i love tank
[zhangy@BlackGhost mytest]$ uniq -D uniqtest   
this is a test   
this is a test   
this is a test   
i love tank   
i love tank  

uniq -D 只显示重复的行,并且把重复几行都显示出来。他不能和-c一起使用

 

  1. [zhangy@BlackGhost mytest]$ uniq -f 1 -c uniqtest
  2. 3 this is a test
  3. 1 i am tank
  4. 2 i love tank
  5. 1 this is a test
  6. 2 whom have a try
  7. 1 you have a try
  8. 1 i want to abroad
  9. 2 those are good men //只有一行,显示二行
[zhangy@BlackGhost mytest]$ uniq -f 1 -c uniqtest
 3 this is a test
 1 i am tank
 2 i love tank
 1 this is a test
 2 whom have a try
 1 you  have a try
 1 i want to abroad
 2 those are good men   //只有一行,显示二行

在这里those只有一行,显示的却是重复了,这是因为,-f 1 忽略了第一列,检查重复从第二字段开始的。

  1. [zhangy@BlackGhost mytest]$ uniq -i -c uniqtest
  2. 3 this is a test
  3. 1 i am tank
  4. 2 i love tank
  5. 1 this is a test
  6. 2 whom have a try //一个大写,一个小写
  7. 1 you have a try
  8. 1 i want to abroad
  9. 1 those are good men
  10. 1 we are good men
[zhangy@BlackGhost mytest]$ uniq -i -c uniqtest
 3 this is a test
 1 i am tank
 2 i love tank
 1 this is a test
 2 whom have a try  //一个大写,一个小写
 1 you  have a try
 1 i want to abroad
 1 those are good men
 1 we are good men

检查的时候,不区分大小写

  1. [zhangy@BlackGhost mytest]$ uniq -s 4 -c uniqtest
  2. 3 this is a test
  3. 1 i am tank
  4. 2 i love tank
  5. 1 this is a test
  6. 3 whom have a try //根上一个例子有什么不同
  7. 1 i want to abroad
  8. 1 those are good men
  9. 1 we are good men
 [zhangy@BlackGhost mytest]$ uniq -s 4 -c uniqtest
 3 this is a test
 1 i am tank
 2 i love tank
 1 this is a test
 3 whom have a try   //根上一个例子有什么不同
 1 i want to abroad
 1 those are good men
 1 we are good men

检查的时候,不考虑前4个字符,这样whom have a try 就和 you have a try 就一样了。

  1. [zhangy@BlackGhost mytest]$ uniq -u uniqtest
  2. i am tank
  3. this is a test
  4. whom have a try
  5. WhoM have a try
  6. you have a try
  7. i want to abroad
  8. those are good men
  9. we are good men
[zhangy@BlackGhost mytest]$ uniq -u uniqtest   
i am 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. [zhangy@BlackGhost mytest]$ uniq -w 2 -c uniqtest
  2. 3 this is a test
  3. 3 i am tank
  4. 1 this is a test
  5. 1 whom have a try
  6. 1 WhoM have a try
  7. 1 you have a try
  8. 1 i want to abroad
  9. 1 those are good men
  10. 1 we are good men
[zhangy@BlackGhost mytest]$ uniq -w 2 -c uniqtest   
 3 this is a test   
 3 i am tank   
 1 this is a test   
 1 whom have a try   
 1 WhoM have a try   
 1 you  have a try   
 1 i want to abroad   
 1 those are good men   
 1 we are good men  

对每行第2个字符以后的内容不作检查,所以i am tank 根 i love tank就一样了。

分享到:
评论

相关推荐

    uniq命令 去除文件中的重复行

    我们应当注意的是,它和sort的区别,sort只要有重复行,它就去除,而uniq重复行必须要连续,也可以用它忽略文件中的重复行。 语法格式:uniq [参数] [文件] 常用参数: -c 打印每行在文本中重复出现的次数 -d ...

    linux下uniq和sort命令用法详解.docx

    uniq 命令是 Linux 中的一个文本处理命令,用于去除文本中的重复行。该命令读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后...

    windows下的uniq

    `uniq`命令在Unix/Linux中是一个非常常见的文本处理工具,它用于过滤出连续重复的行,通常与`sort`命令结合使用,因为`uniq`只对连续的重复行进行处理。在Windows环境下,如果没有内置的`uniq`命令,可以寻找替代品...

    linux下uniq和sort命令用法.docx

    uniq 命令是 Linux 中的一个文本处理命令,用于删除或显示文本文件中的重复行。它可以读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该...

    linux sort join cut paste split uniq

    2. `uniq`命令:它用于删除文本文件中连续重复的行,但不改变原文件内容。如果你想删除所有重复的行,可以先用`sort`对文件排序,然后使用`uniq`。例如,`sort filename | uniq`将删除`filename`中所有连续重复的行...

    linux数据统计基本命令

    `uniq` 命令用于处理已排序的文本文件,并去除连续重复的行: - **去除重复行**:`uniq file` 可以去除文件中相邻的重复行。 - **计数重复行**:`uniq -c file` 可以计算每个唯一行出现的次数。 - 示例: ```bash...

    Linux最常用 150 个命令汇总

    `uniq` 命令可以从文件中去除重复的行,这对于清理数据非常有用。 12. **wc** - **功能说明**:统计文件的行数、单词数或字节数。`wc` 命令可以用来快速统计文件的基本信息。 13. **iconv** - **功能说明**:转换...

    LINUX处理文本命令

    LINUX处理文本命令 处理文本和文本文件的命令 一. sort 文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的字符位置, 对文件行进行排序. 使用-m选项, 它将会合并预排序的输入文件. 想...

    Linux操作命令八.doc

    uniq 命令是 Linux 中一个有用的命令,它从标准输入或单个文件名参数接受数据有序列表,默认情况下,从数据列表中删除任何重复行。uniq 命令的格式为 uniq [选项][文件名]。uniq 命令有八个常用的参数: * -c 在每...

    Linux命令 sort、uniq、tr工具详解

    接下来是`uniq`命令,它的主要作用是去除连续重复的行。`uniq`通常与`sort`结合使用,因为只有排序过的输入才能有效地去除重复。`-u`选项即可实现去重功能,例如`sort somefile | uniq`会先对`somefile`排序,然后...

    Linux命令学习+Linux标准文本处理命令

    - `uniq`(去除重复行) - `join`(合并两个文件的指定列) - `tr`(字符替换和转换) ### 3. 特殊命令与技巧 #### 管道和重定向 - **管道** (`|`):将一个命令的输出作为另一个命令的输入。 - **重定向** (`>` 和...

    linux中常用的shell命令实验

    Linux 中常用的 shell 命令实验 Linux 操作系统中,shell 命令是最基本也是最重要的命令之一。掌握这些命令可以帮助用户更好地使用 Linux 系统。在这篇文章中,我们将讨论 Linux 中常用的 shell 命令,并通过实验来...

    Linux 常用命令整理

    `uniq`命令用于去除重复行。 6. 系统信息和工具 - `touch`命令用于改变文件的时间戳,通常用来创建空白文件。`touch -t`可以设置文件的修改时间。 - `chmod`命令用于更改文件的权限,`chown`命令用于更改文件的...

    Linux Shell学习:uniq命令使用方法介绍

    总结起来,uniq命令在Linux Shell中是处理文本文件重复行的强大工具,通过不同的参数组合,我们可以实现各种定制化的去重操作,满足不同场景的需求。理解并熟练运用uniq,可以极大地提高我们在数据分析、日志分析等...

    Linux常用的60个命令

    57. `uniq`:删除重复的行。 58. `wc`:统计文件中的行数、字数、字节数。 59. `tr`:替换或删除字符。 60. `sed`:流编辑器,用于对文本进行过滤和转换。 以上介绍的Linux命令是系统管理和文件操作中必不可少的...

    Linux运维命令

    - **功能说明**: 去除重复行。 **32. wc** - **命令**: `wc [选项] [文件]` - **功能说明**: 统计字节数、字数、行数等信息。 **33. iconv** - **命令**: `iconv [选项] [文件]` - **功能说明**: 转换文件的编码...

    Linux命令详解手册

    - uniq用于删除重复行; - wc用于统计单词数、字符数和行数。 4. Linux压缩备份命令部分 压缩和备份命令用于数据的压缩、解压缩和备份。 - ar用于管理归档文件; - bunzip2、bzip2和bzip2recover用于bzip2格式的...

    去txt重复行

    下面我们将详细介绍如何去txt重复行,并探讨相关工具和方法。 首先,我们可以手动编写Python脚本来实现这个功能。Python是一种强大的编程语言,特别适合处理文本数据。以下是一个简单的示例,展示了如何使用Python...

    linux下查找重复文件

    我们可以使用`uniq`命令来过滤掉这些相邻的重复行,但要注意`uniq`只会忽略连续的重复行,所以我们需要先用`sort`对整个输出进行排序: ```bash find . -type f -exec md5sum {} \; | sort | uniq -D ``` `uniq -D...

Global site tag (gtag.js) - Google Analytics