歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

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 
Copyright © Linux教程網 All Rights Reserved