`
kejun
  • 浏览: 28415 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用 uniq 除去重复行

阅读更多
    重复行通常不会造成问题,但是有时候它们的确会引起问题。此时,不必花上一个下午的时间来为它们编制过滤器,uniq 命令便是唾手可得的好工具。

    了解一下它是如何节省您的时间和精力的。进行排序之后,您会发现有些行是重复的。有时候该重复信息是不需要的,可以将它除去以节省磁盘空间。不必对文本行进行排序,但是您应当记住 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 或任何其它工具从包含财务或其它重要数据的文件中除去重复行。在这种情况下,重复行几乎总是表示同一金额的另一个交易,将它除去会给会计部造成许多困难。千万别这么干!


清单 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 和 -s 。 uniq 先跳过字段,再跳过字符。如果您只想使用一些预先设置的字符进行比较,那么该怎么办呢?试试看 -w 选项。
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

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

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

    windows下的uniq

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

    去txt重复行

    首先用`sort`对文件进行排序,然后用`uniq`过滤掉连续重复的行: ```bash sort input.txt | uniq > output.txt ``` 这种方法的优势在于速度快且不需要额外的内存资源,但缺点是需要文件可以完全加载到内存中进行...

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

    Linux 下 uniq 和 sort 命令用法详解 uniq 命令是 Linux 中的一个文本处理命令,用于去除文本中的重复行。该命令读取输入文件,并比较相邻...例如,可以使用 uniq 命令去除重复行,然后使用 sort 命令对结果进行排序。

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

    `uniq`函数就是一个用于删除数组中重复项的实用工具。这个功能在数据处理、列表去重等场景中非常常见。以下是对几种实现`uniq`函数方法的详细解析。 1. **YUI的实现方式**: YUI(Yahoo! User Interface Library)...

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

    使用`uniq test`命令,它会删除连续重复的行,结果如下: ``` boy took bat home girl took bat home dog brought hat home ``` 然而,如果需要查看每行出现的次数,可以使用`-c`参数: ``` uniq -c test ``` 这...

    linuxuniq命令参数及用法详解---检查及删除文本文件中重复出现的行列知识.pdf

    Linux中的`uniq`命令是一个非常实用的工具,用于处理文本文件中的重复行。它主要用于检查和删除连续重复的行,使文件内容更加简洁。在数据分析、日志分析和其他需要处理大量文本数据的场景中,`uniq`命令尤其有用。...

    linux下uniq和sort命令用法.docx

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

    linux sort join cut paste split uniq

    如果你想删除所有重复的行,可以先用`sort`对文件排序,然后使用`uniq`。例如,`sort filename | uniq`将删除`filename`中所有连续重复的行。 3. `join`命令:`join`用于合并两个已经按相同字段排序的文件,通常是...

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

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

    Shell中的sort和uniq命令

    在处理包含多个字段的数据时,可以先使用 `sort` 对特定字段排序,再用 `uniq` 进行处理。例如,对于一个包含水果名称、数量和单价的文件,可以按照数量排序并去重: ```bash sort -n -k 2 -t ':' test ``` 3. ...

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

    `sort`、`uniq`和`tr`就是其中三个非常实用的文本处理工具,它们分别用于对文本文件内容进行排序、去除重复行以及转换字符。 首先,让我们详细了解`sort`命令。`sort`的主要功能是对文本文件的行进行排序。它支持...

    js代码-uniq 函数,实现数组去重

    `uniq`函数就是一种常用的自定义方法,用于从数组中去除重复的元素。在这个主题中,我们将深入探讨`uniq`函数的实现原理,以及如何在实际项目中应用。 首先,让我们了解`uniq`函数的基本概念。`uniq`函数接收一个...

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

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

    JavaScript 数组的 uniq 方法

    uniq 方法的实现可以通过多种方式,例如使用遍历方法、桶算法、散列算法等。在遍历方法中,可以顺序遍历数组中的每个元素,如果这个元素的值已经访问过,则加入 Array2,否则加入 Array1。这种方法的时间复杂度约为 ...

    linux下查找重复文件

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

    Javascript 更新 JavaScript 数组的 uniq 方法

    一个典型的例子就是实现数组的`uniq`方法,该方法能够返回一个新数组,其中包含了原始数组的所有非重复元素。 #### 三、初版 uniq 方法存在的问题 在初版的`uniq`方法中,我们可能会遇到以下问题: 1. **处理...

Global site tag (gtag.js) - Google Analytics