重复行通常不会造成问题,但是有时候它们的确会引起问题。此时,不必花上一个下午的时间来为它们编制过滤器,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 选项。
分享到:
相关推荐
我们应当注意的是,它和sort的区别,sort只要有重复行,它就去除,而uniq重复行必须要连续,也可以用它忽略文件中的重复行。 语法格式:uniq [参数] [文件] 常用参数: -c 打印每行在文本中重复出现的次数 -d ...
`uniq`命令在Unix/Linux中是一个非常常见的文本处理工具,它用于过滤出连续重复的行,通常与`sort`命令结合使用,因为`uniq`只对连续的重复行进行处理。在Windows环境下,如果没有内置的`uniq`命令,可以寻找替代品...
首先用`sort`对文件进行排序,然后用`uniq`过滤掉连续重复的行: ```bash sort input.txt | uniq > output.txt ``` 这种方法的优势在于速度快且不需要额外的内存资源,但缺点是需要文件可以完全加载到内存中进行...
Linux 下 uniq 和 sort 命令用法详解 uniq 命令是 Linux 中的一个文本处理命令,用于去除文本中的重复行。该命令读取输入文件,并比较相邻...例如,可以使用 uniq 命令去除重复行,然后使用 sort 命令对结果进行排序。
`uniq`函数就是一个用于删除数组中重复项的实用工具。这个功能在数据处理、列表去重等场景中非常常见。以下是对几种实现`uniq`函数方法的详细解析。 1. **YUI的实现方式**: YUI(Yahoo! User Interface Library)...
使用`uniq test`命令,它会删除连续重复的行,结果如下: ``` boy took bat home girl took bat home dog brought hat home ``` 然而,如果需要查看每行出现的次数,可以使用`-c`参数: ``` uniq -c test ``` 这...
Linux中的`uniq`命令是一个非常实用的工具,用于处理文本文件中的重复行。它主要用于检查和删除连续重复的行,使文件内容更加简洁。在数据分析、日志分析和其他需要处理大量文本数据的场景中,`uniq`命令尤其有用。...
uniq 命令是 Linux 中的一个文本处理命令,用于删除或显示文本文件中的重复行。它可以读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该...
如果你想删除所有重复的行,可以先用`sort`对文件排序,然后使用`uniq`。例如,`sort filename | uniq`将删除`filename`中所有连续重复的行。 3. `join`命令:`join`用于合并两个已经按相同字段排序的文件,通常是...
Linux下文本处理工具很丰富很强大,例如这样一个文件: 代码如下:cat log ...1.使用uniq/sort删除重复行注意:单纯uniq是不行的。 代码如下
在处理包含多个字段的数据时,可以先使用 `sort` 对特定字段排序,再用 `uniq` 进行处理。例如,对于一个包含水果名称、数量和单价的文件,可以按照数量排序并去重: ```bash sort -n -k 2 -t ':' test ``` 3. ...
`sort`、`uniq`和`tr`就是其中三个非常实用的文本处理工具,它们分别用于对文本文件内容进行排序、去除重复行以及转换字符。 首先,让我们详细了解`sort`命令。`sort`的主要功能是对文本文件的行进行排序。它支持...
`uniq`函数就是一种常用的自定义方法,用于从数组中去除重复的元素。在这个主题中,我们将深入探讨`uniq`函数的实现原理,以及如何在实际项目中应用。 首先,让我们了解`uniq`函数的基本概念。`uniq`函数接收一个...
创建一个没有重复的数组 安装 $ npm install array-uniq 用法 import arrayUniq from 'array-uniq' ; arrayUniq ( [ 1 , 1 , 2 , 3 , 3 ] ) ; //=> [1, 2, 3] arrayUniq ( [ 'foo' , 'foo' , 'bar' , 'foo' ] ) ; //...
uniq 方法的实现可以通过多种方式,例如使用遍历方法、桶算法、散列算法等。在遍历方法中,可以顺序遍历数组中的每个元素,如果这个元素的值已经访问过,则加入 Array2,否则加入 Array1。这种方法的时间复杂度约为 ...
我们可以使用`uniq`命令来过滤掉这些相邻的重复行,但要注意`uniq`只会忽略连续的重复行,所以我们需要先用`sort`对整个输出进行排序: ```bash find . -type f -exec md5sum {} \; | sort | uniq -D ``` `uniq -D...
一个典型的例子就是实现数组的`uniq`方法,该方法能够返回一个新数组,其中包含了原始数组的所有非重复元素。 #### 三、初版 uniq 方法存在的问题 在初版的`uniq`方法中,我们可能会遇到以下问题: 1. **处理...