<Precedenti | Contenuti | Succ.>
uniq
Rispetto a sorta, l' uniq il programma è leggero. uniq Esegue un compito apparentemente banale. Quando riceve un file ordinato (o input standard), rimuove tutte le righe duplicate e invia i risultati allo standard output. Viene spesso utilizzato in combinazione con sorta per pulire l'output dai duplicati.
Suggerimento: Mentre uniq è uno strumento Unix tradizionale spesso utilizzato con sorta, la versione GNU di sorta supporta a -u opzione, che rimuove i duplicati dall'output ordinato.
Creiamo un file di testo per provarlo:
[io@linuxbox~]$ cat > foo.txt a
abcbc
[io@linuxbox~]$ cat > foo.txt a
abcbc
Ricordati di digitare Ctrl-d per terminare l'input standard. Ora, se eseguiamo uniq sul nostro file di testo:
[io@linuxbox~]$ uniq foo.txt
abc
[io@linuxbox~]$ uniq foo.txt
abc
i risultati non sono diversi dal nostro file originale; i duplicati non sono stati rimossi. Per
Per svolgere il suo lavoro, uniq deve prima ordinare l'input:
[io@linuxbox~]$ ordina foo.txt | uniq
abc
[io@linuxbox~]$ ordina foo.txt | uniq
abc
Questo è perché uniq rimuove solo le linee duplicate adiacenti tra loro.
uniq offre diverse opzioni. Ecco quelle più comuni:
Tabella 20-2: Opzioni uniq comuni
Opzione Descrizione
Opzione Descrizione
-c Restituisce un elenco di righe duplicate precedute dal numero di volte in cui la riga si verifica.
-d Visualizza solo le righe ripetute, anziché quelle univoche.
-f n ignorare n campi iniziali in ogni riga. I campi sono separati da spazi vuoti come in sorta; tuttavia, a differenza sorta, uniq non ha alcuna opzione per impostare un separatore di campo alternativo.
-i Ignora la distinzione tra maiuscole e minuscole durante i confronti di riga.
-s n Salta (ignora) l'inizio n caratteri di ogni riga.
-u Visualizza solo le righe univoche. Le righe con duplicati vengono ignorate.
Qui vediamo uniq utilizzato per segnalare il numero di duplicati trovati nel nostro file di testo, utilizzando il -c opzione:
[io@linuxbox~]$ ordina foo.txt | uniq -c
2 l'
2 b
2 c
[io@linuxbox~]$ ordina foo.txt | uniq -c
2 l'
2 b
2 c