AIX下uniq命令简介及使用

uniq用来从一个文本中去除或禁止重复的行;sort的-u选项也可以去除重复行。 
命令格式:uniq -u[-d[,-c]] -f input_file output_file 
-u:只显示不重复的行 
-d:只显示有重复数据的行,每种重复行只显示其中一行 
-c:打印每一重复行出现次数 
-f:n为数字,前n个域被忽略,不识别-f选项的系统使用-n选项 
我们来看下面的例子: 
有重复数据的文件week.txt 
    1  Monday 
    2  Monday 
    3  Tuesday 
    4  Tuesday 
    5  Wednesday 
    6  Monday 
    7  TuesDay 
    8  Thursday 
    9  Friday 
    10  Saturday 
    11  Sunday 
    12  Friday 
重复的数据有Monday(1,2,6),Tuesday(3,4,7),Friday(9,12)。 
查看week.txt文件中,重复的行: 
uniq -d week.txt 
Monday 
Tuesday 
注意,这里只显示重复数据中,Monday和Tuesday这两行,但是Friday这个重复行并没显示。 
下面查看不重复的行: 
uniq -u week.txt 
Wednesday 
Monday 
TuesDay 
Thursday 
Friday 
Saturday 
Sunday 
Friday 
注意,这里面包含了出现2次的Friday,他们不是重复数据吗? 
答案:他们确实非重复数据。 
我们再看每行重复的次数: 
uniq -c week.txt 
  2 Monday 
  2 Tuesday 
  1 Wednesday 
  1 Monday 
  1 TuesDay 
  1 Thursday 
  1 Friday 
  1 Saturday 
  1 Sunday 
  1 Friday 
从这里,我们看到Monday和Tuesday重复了2次,而Friday就出现了一次,不重复。 
原来,AIX将连续出现的相同数据认为是重复数据, 
而同样的数据(Friday),非连续出现,就不认为重复。 
这是区别于DB2数据库中表的重复数据的,DB2数据库表中, 
只要相同的数据,连续或者非连续出现多次,则认为重复。 
 
sort也具有去除重复的功能: 
sort -u week.txt 
Friday 
Monday 
Saturday 
Sunday 
Thursday 
Tuesday 
TuesDay 
Wednesday 
 
uniq命令还可以根据域进行去重。 
看下面的例子: 
pg parts.txt 
AK47    GOOD 
DS123  GOOD 
ER001  GOOD 
 
显示每行的出现次数: 
uniq -c parts.txt 
  1 AK47      GOOD 
  1 DS123      GOOD 
  1 ER001      GOOD 
 
按照第二个域进行去除重复: 
uniq -f2 parts.txt 
AK47    GOOD 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/20393.html