English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Comando uniq di Linux

大全命令Linux

Il comando uniq di Linux viene utilizzato per controllare e rimuovere le righe duplicate nei file di testo e viene generalmente utilizzato insieme al comando sort.

uniq può controllare le righe duplicate presenti nei file di testo.

Sintassi

uniq [-cdu][-f<colonna>][-s<posizione_carattere>][-w<posizione_carattere>][--help][--version][file_di_input][file_di_output]

Parametri:

  • -c o --count Visualizza il numero di volte che ogni riga si ripete accanto a ciascuna colonna.

  • -d o --repeated Visualizza solo le righe che si ripetono.

  • -f<colonna> o --skip-fields=<colonna> Ignora le colonne specificate per il confronto.

  • -s<posizione_carattere> o --skip-chars=<posizione_carattere> Ignora i caratteri specificati per il confronto.

  • -u o --unique Visualizza solo le righe che si presentano una volta.

  • -w<posizione_carattere> o --check-chars=<posizione_carattere> Specifica i caratteri da confrontare.

  • --help Visualizza l'aiuto.

  • --version Visualizza le informazioni sulla versione.

  • [File di input] Specifica il file di testo ordinato. Se non viene specificato questo elemento, i dati vengono letti dal dispositivo standard;

  • [File di output] Specifica il file di output. Se non viene specificato questa opzione, il contenuto viene visualizzato sul dispositivo di output standard (terminale).

Esempio online

Il file testfile contiene le righe 2, 3, 5, 6, 7 e 9 identiche. Per rimuovere le righe duplicate, utilizzare il comando seguente:

uniq testfile

Il contenuto originale di testfile è:

$ cat testfile  
test 30  
test 30  
test 30  
Hello 95  
Hello 95  
Hello 95  
Hello 95  
Linux 85  
Linux 85

使用uniq 命令删除重复的行后,有如下输出结果:

$ uniq testfile # 删除重复行后的内容  
test 30  
Hello 95  
Linux 85

检查文件并删除文件中重复出现的行,并在行首显示该行重复出现的次数。使用如下命令:

uniq -c testfile

结果输出如下:

$ uniq -c testfile # 删除重复行后的内容  
3 test 30 # 前面的数字的意义为该行共出现了3次  
4 Hello 95 # 前面的数字的意义为该行共出现了4次  
2 Linux 85 # 前面的数字的意义为该行共出现了2次

当重复的行并不相邻时,uniq 命令是不起作用的,即若文件内容为以下时,uniq 命令不起作用:

$ cat testfile1 # 原有内容 
test 30  
Hello 95  
Linux 85 
test 30  
Hello 95  
Linux 85 
test 30  
Hello 95  
Linux 85

这时我们就可以使用 sort:

$ sort testfile1 | uniq
Hello 95  
Linux 85 
test 30

统计各行在文件中出现的次数:

$ sort testfile1 | uniq -c
   3 Hello 95  
   3 Linux 85 
   3 test 30

在文件中找出重复的行:

$ sort testfile1 | uniq -d
Hello 95  
Linux 85 
test 30

大全命令Linux