重复行通常不会造成问题,但是有时候它们的确会引起问题。此时,不必花上一个下午的时间来为它们编制过滤器,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
或任何其它工具从包含财务或其它重要数据的文件中除去重复行。在这种情况下,重复行几乎总是表示同一金额的另一个交易,将它除去会给会计部造成许多困难。千万别这么干!
如果您希望您的工作轻松点,比如只显示唯一的或重复的行,那么该怎么办呢?您可以用 -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
和 -s
。 uniq
先跳过字段,再跳过字符。如果您只想使用一些预先设置的字符进行比较,那么该怎么办呢?试试看 -w
选项。
相关推荐
我们应当注意的是,它和sort的区别,sort只要有重复行,它就去除,而uniq重复行必须要连续,也可以用它忽略文件中的重复行。 语法格式:uniq [参数] [文件] 常用参数: -c 打印每行在文本中重复出现的次数 -d ...
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
Linux下文本处理工具很丰富很强大,例如这样一个文件: 代码如下:cat log ...1.使用uniq/sort删除重复行注意:单纯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命令的作用:显示唯一的行,对于那些连续重复的行只显示一次! 本文将通过实践实例说明
可以直接使用的代码:软件开发网修正版 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]下面是进阶教程与说明,喜欢跟深入的朋友可以参考下。首先让我们看下 YUI 是如何处理的: 代码如下: var toObject = function...
删除文本中的重复行(sort+uniq/awk/sed) 三种常见方法: 第一,用sort+uniq,注意,单纯uniq是不行的。 shell> sort -k2n file | uniq > a.out 这里我做了个简单的测试,当file中的重复行不再一起的时候...
给Array本地对象增加一个原型方法,它的用途是删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。 形式化描述: input Array(size=N) output Array1=Array的无重复保序的子集, 无...
主要介绍了Linux命令 sort、uniq、tr工具详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
通过管道传输数据,并通过管道传输去重复数据 例子 var uniq = require ( 'uniq-stream' ) var split = require ( 'split' ) var fs = require ( 'fs' ) fs . createReadStream ( 'dupe-ridden-file.txt' ) . pipe ...
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 ...
文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的字符位置, 对文件行进行排序. 使用-m选项, 它将会合并预排序的输入文件. 想了解这个命令的全部参数请参考这个命令的info页. 二. ...
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...
测试文件 代码如下: [root@bogon ~]# cat >test jason jason jason fffff jason 按 Ctr + D保存 1、sort -u ...去除重复并保留一份重复的数据 代码如下: [root@bogon ~]# sort test|uniq fffff jason
题目如下: 请给Array本地对象增加一个原型方法,它的用途是删除数组条目中重复的条目(可能有多个),返回值是一个仅包含被删除的重复条目的新数组。 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 代码如下:...
:从文件中删除重复的,连续的行(模拟“ uniq”)。 :从文件中删除重复的,非连续的行。 :删除前导和尾随空格(空格和制表符)。 :删除文件顶部的所有前导空白行。 :删除前导的空格(空格和制表符)。 :删除...
uniq, UNIQue, 输出没有重复行的数据; 参数-d, 可以输出重复行; wc, 单词统计(Word Count); 参数-l, 只统计行; grep, 输出匹配模式, Global Regular Expression Print, 全局正则表达式打印; 如...
使用现有的重复数据删除工具,您不得不选择是否保留顺序或处理大量单词表。 不幸的是,创建词表需要同时满足以下两个条件: 所以我用编写了duplicut以解决这一非常具体的需求 :nerd_face: :laptop_computer: :light...
uniq命令可以去掉文本中重复的行。( × ) 二、单项选择题 find命令按照文件名进行查找的模式为(A) A-name B-user C.-file D.-filename comm命令的选项-1的作用是(B) A.不输出两个文件相同行。 B.不输出第一个...