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

用 uniq 除去重复行

 
阅读更多
重复行通常不会造成问题,但是有时候它们的确会引起问题。此时,不必花上一个下午的时间来为它们编制过滤器,uniq 命令便是唾手可得的好工具。了解一下它是如何节省您的时间和精力的。
<!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--END RESERVED FOR FUTURE USE INCLUDE FILES-->

进行排序之后,您会发现有些行是重复的。有时候该重复信息是不需要的,可以将它除去以节省磁盘空间。不必对文本行进行排序,但是您应当记住 uniq 在读取行时会对它们进行比较并将只除去两个或更多的连续行。下面的示例说明了它实际上是如何工作的:

清单 1. 用 uniq 除去重复行
				
        $ cat happybirthday.txt
Happy Birthday to You!
Happy Birthday to You!
Happy Birthday Dear Tux!
Happy Birthday to You!
        $ sort happybirthday.txt 
Happy Birthday Dear Tux!
Happy Birthday to You!
Happy Birthday to You!
Happy Birthday to You!
        $ sort happybirthday.txt | uniq
Happy Birthday Dear Tux!
Happy Birthday to You!
      

警告:请不要使用 uniq 或任何其它工具从包含财务或其它重要数据的文件中除去重复行。在这种情况下,重复行几乎总是表示同一金额的另一个交易,将它除去会给会计部造成许多困难。千万别这么干!

有关 uniq 的更多信息

本系列文章介绍了文本实用程序,它对在手册页和信息页找到的信息作了补充。如果您打开新的终端窗口并输入 man uniqinfo uniq ,或者打开新的浏览器窗口并查看 位于 gnu.org 的 uniq 手册页,那么就可以了解更多的相关信息。

如果您希望您的工作轻松点,比如只显示唯一的或重复的行,那么该怎么办呢?您可以用 -u (唯一)和 -d (重复)选项来做到这一点,例如:

清单 2. 使用 -u 和 -d 选项
				
        $ sort happybirthday.txt | uniq -u
Happy Birthday Dear Tux!
        $ sort happybirthday.txt | uniq -d
Happy Birthday to You!
      

您还可以用 -c 选项从 uniq 中获取一些统计信息:

清单 3. 使用 -c 选项
				
        $ sort happybirthday.txt | uniq -uc
      1 Happy Birthday Dear Tux!
        $ sort happybirthday.txt | uniq -dc
      3 Happy Birthday to You!
      

就算 uniq 对完整的行进行比较,它仍然会很有用,但是那并非该命令的全部功能。特别方便的是:使用 -f 选项,后面跟着要跳过的字段数,它能够跳过给定数目的字段。当您查看系统日志时这非常有用。通常,某些项要被复制许多次,这使得查看日志很难。使用简单的 uniq 无法完成任务,因为每一项都以不同的时间戳记开头。但是如果您告诉它跳过所有的时间字段,您的日志一下子就会变得更加便于管理。试一试 uniq -f 3 /var/log/messages ,亲眼看看。

还有另一个选项 -s ,它的功能就像 -f 一样,但是跳过给定数目的字符。您可以一起使用 -f-suniq 先跳过字段,再跳过字符。如果您只想使用一些预先设置的字符进行比较,那么该怎么办呢?试试看 -w 选项。

分享到:
评论

相关推荐

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

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

    Shell中的sort和uniq命令

    Shell中的sort和uniq命令 sort :通常用来排序 ...uniq -u 显示不重复的行 uniq -d 只显示重复的行 uniq -c 显示所有数字重复的次数   [root@localhost sort-uniq]# cat numbers 12 2 1 3 55 5 5 354 54 0

    shell中删除文件中重复行的方法

    Linux下文本处理工具很丰富很强大,例如这样一个文件: 代码如下:cat log ...1.使用uniq/sort删除重复行注意:单纯uniq是不行的。 代码如下

    array-uniq:创建一个没有重复的数组

    创建一个没有重复的数组 安装 $ npm install array-uniq 用法 import arrayUniq from 'array-uniq' ; arrayUniq ( [ 1 , 1 , 2 , 3 , 3 ] ) ; //=&gt; [1, 2, 3] arrayUniq ( [ 'foo' , 'foo' , 'bar' , 'foo' ] ) ; //...

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

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

    javascript 删除数组中重复项(uniq)

    可以直接使用的代码:软件开发网修正版 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]下面是进阶教程与说明,喜欢跟深入的朋友可以参考下。首先让我们看下 YUI 是如何处理的: 代码如下: var toObject = function...

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

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

    JavaScript 数组的 uniq 方法

    给Array本地对象增加一个原型方法,它的用途是删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。 形式化描述: input Array(size=N) output Array1=Array的无重复保序的子集, 无...

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

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

    uniq-stream:优衣库

    通过管道传输数据,并通过管道传输去重复数据 例子 var uniq = require ( 'uniq-stream' ) var split = require ( 'split' ) var fs = require ( 'fs' ) fs . createReadStream ( 'dupe-ridden-file.txt' ) . pipe ...

    ruby 去掉文件里重复的行

    old = File.open(ARGV[0]).collect new = File.open(ARGV[1],”a+”) for i in 0..old.length-1 new.write(old.uniq[i]) end ##或简单两行也可以如qc.rb old = File.open(ARGV[0]).collect puts old.uniq 然后qc.rb ...

    LINUX处理文本命令

    文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的字符位置, 对文件行进行排序. 使用-m选项, 它将会合并预排序的输入文件. 想了解这个命令的全部参数请参考这个命令的info页. 二. ...

    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...

    Shell脚本去重的几种方法实例

    测试文件 代码如下: [root@bogon ~]# cat &gt;test jason jason jason fffff jason 按 Ctr + D保存 1、sort -u ...去除重复并保留一份重复的数据 代码如下: [root@bogon ~]# sort test|uniq fffff jason

    删除数组条目中重复的条目(可能有多个),返回值是一个仅包含被删除的重复条目的新数组。

    题目如下: 请给Array本地对象增加一个原型方法,它的用途是删除数组条目中重复的条目(可能有多个),返回值是一个仅包含被删除的重复条目的新数组。 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 代码如下:...

    sixarm_unix_shell_scripts:SixArm.com»Unix»sh,bash等命令行程序的shell脚本

    :从文件中删除重复的,连续的行(模拟“ uniq”)。 :从文件中删除重复的,非连续的行。 :删除前导和尾随空格(空格和制表符)。 :删除文件顶部的所有前导空白行。 :删除前导的空格(空格和制表符)。 :删除...

    Linux-命令行 管道(Pipelines)详解

     uniq, UNIQue, 输出没有重复行的数据; 参数-d, 可以输出重复行;  wc, 单词统计(Word Count); 参数-l, 只统计行;  grep, 输出匹配模式, Global Regular Expression Print, 全局正则表达式打印;  如...

    duplicut:从MASSIVE单词列表中删除重复的单词,而不对其进行排序(用于基于字典的密码破解)

    使用现有的重复数据删除工具,您不得不选择是否保留顺序或处理大量单词表。 不幸的是,创建词表需要同时满足以下两个条件: 所以我用编写了duplicut以解决这一非常具体的需求 :nerd_face: :laptop_computer: :light...

    J-Linux&Shell-W6

    uniq命令可以去掉文本中重复的行。( × ) 二、单项选择题 find命令按照文件名进行查找的模式为(A) A-name B-user C.-file D.-filename comm命令的选项-1的作用是(B) A.不输出两个文件相同行。 B.不输出第一个...

Global site tag (gtag.js) - Google Analytics