Linux命令详解-Uniq

本次我们来学习一下uniq shell 命令,wiki见这里:http://en.wikipedia.org/wiki/Uniqwiki的结果比较简单,我们可以直接在系统上先man一下看下结果:

 

 

uniq - report or omit repeated lines

 

 

这个摘要很有一下,注意是report or omit,也就是说既能显示某些信息,也能忽略某些信息,后者出现在我们头脑的机会貌似要少一些。还有一点要注意的是,这个命令是对输入行进行操作,也就是行操作,这点在使用前就要有概念。

uniq函数能够从输入判断连续的行是否是unique的,同时把结果输出,可以是标准输出,也可以是文件。

 

 

uniq支持参数,其中主要的参数包括:

 

-c:打印出现的行数
-d:打印重复行
-f:跳过比较前面的N个域(Field)
-i:忽略大小写
-s:跳过比较前面的N的字符(Character)
-u:打印唯一行
-w:每行检查的字幕不超过N

 

 

uniq的主要功能就这么多,下面我们通过例子来验证一下:

我们使用文件corpus.txt,文件内容特意处理过,尽可能使用uniq的这些特性:

 

>>cat corpus.txt
hadoop
dfs
dfsl
hbase
Memcache
sql
Sql
SQL
memcache
MEMCACHE
HBase
hadoop
HADOOP
hive
Hive
sql
sql
big
big
BIG
Big
hbase
APACHE
Apache
apache

 

-c参数能够显示出单词出现的次数

 

>>cat corpus.txt | uniq -c
      1 hadoop
      1 dfs
      1 dfsl
      1 hbase
      1 Memcache
      1 sql
      1 Sql
      1 SQL
      1 memcache
      1 MEMCACHE
      1 HBase
      1 hadoop
      1 HADOOP
      1 hive
      1 Hive
      2 sql
      2 big
      1 BIG
      1 Big
      1 hbase
      1 APACHE
      1 Apache
      1 apache
 

-i参数不区分大小写,显示遇见的第一行, 如下面的sql和APACHE显示

 

>>cat corpus.txt | uniq -ci
      1 hadoop
      1 dfs
      1 dfsl
      1 hbase
      1 Memcache
      3 sql
      2 memcache
      1 HBase
      2 hadoop
      2 hive
      2 sql
      4 big
      1 hbase
      3 APACHE
 

-d参数显示出出现次数大于1的行

 

>>cat corpus.txt | uniq -cid
      3 sql
      2 memcache
      2 hadoop
      2 hive
      2 sql
      4 big
      3 APACHE
 

 

-u参数显示只出现过一次的行

 

>>cat corpus.txt | uniq -ciu
      1 hadoop
      1 dfs
      1 dfsl
      1 hbase
      1 Memcache
      1 HBase
      1 hbase

 

-s参数表示从第N个字符开始统计,下面例子表示从第一个字符开始统计,即忽略首字符,看最后Apache的输出

 

>>cat corpus.txt | uniq   -c -s 1
      1 hadoop
      1 dfs
      1 dfsl
      1 hbase
      1 Memcache
      2 sql
      1 SQL
      1 memcache
      1 MEMCACHE
      1 HBase
      1 hadoop
      1 HADOOP
      2 hive
      2 sql
      2 big
      1 BIG
      1 Big
      1 hbase
      1 APACHE
      2 Apache
 

-w参数表示只比较N个字符,这里只比较两个字符,可以观察下dfs的输出。

 

>>cat corpus.txt | uniq  -c  -s 1 -w 2 
      1 hadoop
      2 dfs
      1 hbase
      1 Memcache
      2 sql
      1 SQL
      1 memcache
      1 MEMCACHE
      1 HBase
      1 hadoop
      1 HADOOP
      2 hive
      2 sql
      2 big
      1 BIG
      1 Big
      1 hbase
      1 APACHE
      2 Apache
 

 

uniq的主要命令就是这些,还有个-f参数大家可以自行参考下官网,uniq的命令看起来不是特别强大,但是和sort一起使用会发挥出巨大的能量,大家可以先行学习下sort的功能,下次我们再来学习sort命令

 

 

 

 

猜你喜欢

转载自isilic.iteye.com/blog/1753956