`
473687880
  • 浏览: 482630 次
文章分类
社区版块
存档分类
最新评论

linux 下的文本处理——除去重复行uniq命令

 
阅读更多

原文地址:http://blog.51yip.com/shell/1022.html

一,uniq干什么用的

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

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

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

二,uniq参数说明

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

其中-z不知道有什么用

三,测试文本文件uniqtest

  1. thisisatest
  2. thisisatest
  3. thisisatest
  4. iamtank
  5. ilovetank
  6. ilovetank
  7. thisisatest
  8. whomhaveatry
  9. WhoMhaveatry
  10. youhaveatry
  11. iwanttoabroad
  12. thosearegoodmen
  13. wearegoodmen

四,实例详解

[zhangy@BlackGhostmytest]$uniq-cuniqtest
  1. 3thisisatest
  2. 1iamtank
  3. 2ilovetank
  4. 1thisisatest//和第一行是重复的
  5. 1whomhaveatry
  6. 1WhoMhaveatry
  7. 1youhaveatry
  8. 1iwanttoabroad
  9. 1thosearegoodmen
  10. 1wearegoodmen

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

  1. [zhangy@BlackGhostmytest]$sortuniqtest|uniq-c
  2. 1WhoMhaveatry
  3. 1iamtank
  4. 2ilovetank
  5. 1iwanttoabroad
  6. 4thisisatest
  7. 1thosearegoodmen
  8. 1wearegoodmen
  9. 1whomhaveatry
  10. 1youhaveatry

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

  1. [zhangy@BlackGhostmytest]$uniq-d-cuniqtest
  2. 3thisisatest
  3. 2ilovetank

uniq -d 只显示重复的行

  1. [zhangy@BlackGhostmytest]$uniq-Duniqtest
  2. thisisatest
  3. thisisatest
  4. thisisatest
  5. ilovetank
  6. ilovetank

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

[zhangy@BlackGhostmytest]$uniq-f1-cuniqtest
  1. 3thisisatest
  2. 1iamtank
  3. 2ilovetank
  4. 1thisisatest
  5. 2whomhaveatry
  6. 1youhaveatry
  7. 1iwanttoabroad
  8. 2thosearegoodmen//只有一行,显示二行

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

[zhangy@BlackGhostmytest]$uniq-i-cuniqtest
  1. 3thisisatest
  2. 1iamtank
  3. 2ilovetank
  4. 1thisisatest
  5. 2whomhaveatry//一个大写,一个小写
  6. 1youhaveatry
  7. 1iwanttoabroad
  8. 1thosearegoodmen
  9. 1wearegoodmen

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

  1. [zhangy@BlackGhostmytest]$uniq-s4-cuniqtest
  2. 3thisisatest
  3. 1iamtank
  4. 2ilovetank
  5. 1thisisatest
  6. 3whomhaveatry//根上一个例子有什么不同
  7. 1iwanttoabroad
  8. 1thosearegoodmen
  9. 1wearegoodmen

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

  1. [zhangy@BlackGhostmytest]$uniq-uuniqtest
  2. iamtank
  3. thisisatest
  4. whomhaveatry
  5. WhoMhaveatry
  6. youhaveatry
  7. iwanttoabroad
  8. thosearegoodmen
  9. wearegoodmen

去重复的项,然后全部显示出来

  1. [zhangy@BlackGhostmytest]$uniq-w2-cuniqtest
  2. 3thisisatest
  3. 3iamtank
  4. 1thisisatest
  5. 1whomhaveatry
  6. 1WhoMhaveatry
  7. 1youhaveatry
  8. 1iwanttoabroad
  9. 1thosearegoodmen
  10. 1wearegoodmen

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

分享到:
评论

相关推荐

    LINUX处理文本命令

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

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

    该命令的作用是用来去除文本文件中连续的重复行,中间不能夹杂其他文本行。去除了重复的,保留的都是唯一的,也就是独特的,唯一的了。 我们应当注意的是,它和sort的区别,sort只要有重复行,它就去除,而uniq重复...

    Linux学习笔记【博文整理系列】

    Linux笔记——命令:Sort,uniq,join,cut,paste,split Linux笔记——shell基础:变量&本地变量&位置变量&特定变量参数 Linux笔记——条件测试test Linux笔记——控制流 Linux笔记——shell补充:参数传递&函数等 Linux...

    Linux文本处理命令合集

    主要涉及shell脚本中文本处理常见命令,diff/patch查找文本差异,字符串截取cut、tr、uniq等

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

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

    linux下uniq和sort命令用法.docx

    linux下uniq和sort命令用法.docx

    Shell中的sort和uniq命令

    uniq :通常对重复字符进行处理 sort -n sort -r sort -u 去重,u: unique(独一无二的) sort -o 指定输出文件 sort -t 指定分隔符 sort -k 指定列排序(配合-t使用) 所有参数都不改变原文件,只是在终端输出   ...

    史上最全的 Linux Shell 文本处理工具集锦.doc

    本文将介绍Linux下使用Shell处理文本时最常用的工具:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk;提供的例子和参数都是最常用和最为实用的;对shell脚本使用的原则是命令单行书写,尽量不要超过...

    linux sort join cut paste split uniq

    详细介绍linux下用于处理文本文件分类、合并、分割操作的工具 如:sort、uniq、join、cut、paste、split

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

    uniq命令的作用:显示唯一的行,对于那些连续重复的行只显示一次! 本文将通过实践实例说明

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

    主要介绍了Linux命令 sort、uniq、tr工具详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    常用linux命令小结

    因为不耐烦反复的查,索性自己总结了一个pdf,里面包括常用的linux命令,包括gcc,grep,tar,sed,find,screen,nohup,scp等,另外还有一些常用的文本处理命令如cat,split,head,tail,uniq,wc,more,less等。

    windows下的uniq

    windows下的uniq,很好用的小东西,配合Gawk使用更佳。

    shell脚本,删除文本中的字符

    删除文本中的重复行(sort+uniq/awk/sed) 三种常见方法:  第一,用sort+uniq,注意,单纯uniq是不行的。 shell> sort -k2n file | uniq > a.out  这里我做了个简单的测试,当file中的重复行不再一起的时候...

    linux 核心命令源码

    linux 核心命令源码(cp mv cat chgrp chown cut date df du echo env expand expr find force fs group head hostname join kill link ls mkdir mv nice od paste printf ptx rm selinux seq sleep sort split stat...

    windows上可直接使用的awk、sed、grep等文本处理命令和彩色显示echo命令(from.Cygwin).zip

    包含命令:awk、cat、cut、diff、echo、gawk、grep、head、sed、sort、tac、tail、tr、uniq、wc 可以在windows上cmd窗口显示彩色文字,用法:echo.exe -e "\033[32;1mGREEN\033[0m

    Linux下查看CPU型号,内存大小,硬盘空间的命令(详解)

    2 **uniq命令:删除重复行;wc –l命令:统计行数** 1.2 查看CPU核数 # cat /proc/cpuinfo | grep “cpu cores” | uniq cpu cores : 4 1.3 查看CPU型号 # cat /proc/cpuinfo | grep ‘model name’ |uniq model name...

    Linux课堂笔记.pdf

    一、操作系统概述 1、 操作系统 2、 不同应用利于的主流操作系统二、系统安装 1、安装VM虚拟机 1.1 简要介绍 1.2 配置网卡 ...2.8.8 uniq命令 2.8.9 tee命令 2.8.10 tr命令 2.8.11 split命令 2.8.12 awk命令

    Linux sort,uniq,cut,wc命令详解

     sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序。  sort语法  [root@www~]# sort [-fbMnrtuk] ...

Global site tag (gtag.js) - Google Analytics