COMANDO uniq

()

uniq è un comando dei sistemi operativi Unix e Unix-like, che legge un file di testo e lo scrive sullo standard output scartando ogni linea che è identica a quella immediatamente precedente, oppure anche indicando solo le linee che sono diverse dalla linea immediatamente successiva.

Per ottenere un elenco che non contenga linee duplicate (o anche un elenco delle linee che sono duplicate) è pertanto necessario che i dati in input siano stati prima ordinati, ad esempio tramite il comando sort.

uniq è un tipo di filtro.

La sintassi generale di uniq è la seguente:

uniq [opzioni] [–] [file_input [file_output]]
Il parametro facoltativo file_input indica il nome del file da cui leggere i dati; se è omesso, oppure se è un trattino (“-“), i dati sono letti dallo standard input.

Il parametro facoltativo file_output indica il nome del file in cui scrivere il risultato; se non è specificato, il risultato è scritto sullo standard output.

Il doppio trattino — (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni.

Tra le opzioni principali vi sono:

-c
Precede ogni linea con un conteggio del numero di volte consecutive in cui è ripetuta.
-d
Scarta le linee che non fanno parte di gruppi di linee identiche consecutive.
-f num
Nel confrontare due linee per vedere se sono identiche, scarta un numero num di campi a partire dall’inizio di ogni linea. I campi sono separati tra loro da sequenze di uno o più spazi vuoti.
-s num
Nel confrontare due linee per vedere se sono identiche, scarta un numero num di caratteri a partire dall’inizio di ogni linea, oppure dall’inizio del primo campo non scartato tramite l’opzione -f.
-u
Scarta completamente le linee che fanno parte di gruppi di linee identiche consecutive (non viene nemmeno indicata la prima)

uniq è tipicamente usato in abbinamento al comando sort in una pipeline software, al fine di ottenere degli elenchi privi di linee duplicate oppure per individuare le sole linee duplicate.

Il comando sort è in grado di svolgere autonomamente la rimozione di duplicati tramite l’opzione -u, tra l’altro con una maggiore flessibilità rispetto ad uniq riguardo a quali linee considerare identiche; tuttavia sort non è in grado di produrre autonomamente un elenco delle sole linee duplicate, né di conteggiare il numero di ripetizioni, ed i in questi casi occorre ancora avvalersi di uniq.
Per vedere la lista delle linee contenute in un file, ordinata per il numero di volte in cui esse appaiono:

sort file.txt | uniq -c | sort -n

/ 5
Grazie per aver votato!

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?