Linux Command · 6 min read · Sep 19, 2025
Tutorial sul comando Linux Uniq per principianti (10 esempi)
Se sei un utente della riga di comando di Linux e il tuo lavoro comporta la manipolazione di file di testo, dovresti sapere (se non lo sai già) che ci sono molte utilità da riga di comando che possono esserti di grande aiuto in diverse situazioni. Ad esempio, esiste uno strumento chiamato ‘uniq’ che riporta o addirittura elimina le righe ripetute in un file.
In questo articolo, discuteremo di ‘uniq’ attraverso esempi facili da comprendere. Ma prima di farlo, vale la pena menzionare che tutti gli esempi e le istruzioni menzionati in questo tutorial sono stati testati su Ubuntu 16.04LTS.
Comando Linux Uniq
Come già accennato all’inizio, il comando uniq riporta o omette le righe ripetute. Ecco la sintassi generale di questo comando:
uniq [OPZIONE]… [INPUT [OUTPUT]]
Secondo la pagina man dell’utilità: “Filtra le righe adiacenti corrispondenti da INPUT (o input standard), scrivendo in OUTPUT (o output standard). Senza opzioni, le righe corrispondenti vengono unite alla prima occorrenza.”
Di seguito alcuni esempi che ti aiuteranno a comprendere meglio lo strumento.
1. Come eliminare le righe ripetute utilizzando il comando uniq
Supponiamo che il file contenga le seguenti righe:
Chiaramente, ogni riga è ripetuta. Ora eseguiamo Uniq su questo file e vediamo cosa succede.
uniq file1Come puoi vedere, l’output prodotto dal comando non contiene righe ripetute. Si prega di notare che il file originale - ‘file1’ nel nostro caso - rimane inalterato. Puoi reindirizzare l’output dello strumento a un altro file nel caso tu voglia salvarlo e lavorarci sopra.
2. Come visualizzare il numero di ripetizioni per ogni riga
Se lo desideri, puoi anche far visualizzare a uniq nell’output il numero di volte in cui una riga è ripetuta. Questo può essere fatto utilizzando l’opzione da riga di comando -c. Ad esempio, il seguente comando:
uniq -c file1produce il seguente output:
Come puoi vedere, il numero di ripetizioni per ogni riga è prefissato prima di essa nell’output.
3. Come stampare solo le righe duplicate utilizzando uniq
Per far stampare a uniq solo le righe duplicate, utilizza l’opzione da riga di comando -D. Ad esempio, supponiamo che file1 ora contenga una riga extra in fondo (nota che questa riga non è ripetuta).
Ora, quando eseguo il seguente comando:
uniq -D file1Viene prodotto il seguente output:
Come puoi vedere, l’opzione -D fa sì che uniq visualizzi tutte le righe ripetute nell’output, comprese tutte le loro ripetizioni. Per meglio segregare, puoi avere una riga vuota dopo ogni gruppo di righe ripetute, qualcosa che può essere fatto utilizzando l’opzione –all-repeated.
uniq –all-repeated[=METODO] file1
Questa opzione richiede che venga inserito un nome di metodo dall’utente. I valori potrebbero essere prepend (per aggiungere una riga vuota) o separate (per aggiungere una riga vuota). Ad esempio, ecco questa opzione in azione con il metodo prepend.

Proseguendo, se desideri che lo strumento visualizzi solo una riga duplicata per gruppo, allora puoi optare per l’opzione -d. Ecco un esempio di questo:
Chiaramente, solo una riga ripetuta di ciascun gruppo è stata visualizzata nell’output.
4. Come far evitare a uniq di confrontare i primi campi
A volte, a seconda della situazione, la somiglianza di due righe è definita da una piccola parte di quelle righe. Ad esempio, considera il contenuto del seguente file:
Ora, supponiamo che le righe siano considerate simili o diverse in base al loro secondo campo (HTF o FF), e desideri comunicare questo a uniq, allora questo può essere fatto utilizzando l’opzione da riga di comando -f.
uniq -f [numero-di-campi-da-saltare] [nome-file]L’opzione -f richiede di passare un numero che rappresenta il numero di campi che desideri che il comando salti. Ad esempio, nel nostro caso, possiamo passare ‘1’ come argomento a -f poiché è solo il primo campo che vogliamo che uniq salti.
uniq -f 1 file1L’output mostra chiaramente che uniq ha considerato sia la prima che la terza riga come ripetute in base ai rispettivi secondi campi.
5. Come far visualizzare a uniq tutte le righe, separando i gruppi ripetitivi con una riga vuota
Nel caso in cui la richiesta sia di visualizzare tutte le righe, separando i gruppi ripetitivi di righe con una riga vuota, allora puoi utilizzare l’opzione –group. Come l’opzione –all-repeated di cui abbiamo discusso in precedenza, anche –group richiede di indicare la posizione della riga vuota (prepend, append o both).
Ecco un esempio:

Nota che l’opzione -f di cui abbiamo già discusso nella sezione precedente.
6. Come far stampare a uniq solo righe non ripetitive
Come avrai capito fino ad ora, per impostazione predefinita il comando uniq visualizza solo righe ripetute nell’output. Ma se lo desideri, puoi invece farlo visualizzare solo righe non ripetute o uniche. Questo può essere fatto utilizzando l’opzione da riga di comando -u.
uniq -u [nome-file]Quindi, nel nostro caso:
uniq -u file1
Ecco un esempio:
Nota che l’opzione -f di cui abbiamo già discusso nella sezione/punto numero 4.
7. Come far evitare a uniq di confrontare un numero impostato di caratteri iniziali
In uno dei nostri esempi precedenti, abbiamo discusso di come puoi far saltare a uniq i campi. Tuttavia, se lo desideri, puoi forzare lo strumento a saltare anche un numero impostato di caratteri iniziali. Questa funzionalità può essere accessibile utilizzando l’opzione da riga di comando -s.
uniq -s [numero-di-caratteri] nomefile
Ad esempio, supponiamo che il file contenga le seguenti righe:
Ora, se desideri che uniq salti i primi 4 caratteri in ogni riga prima di confrontare, allora questo può essere fatto nel seguente modo:
uniq -s 4 file1
Ecco il comando sopra in azione:
Quindi puoi vedere che la quarta riga (faq_forge) che era originariamente presente è stata saltata nell’output. Questo perché, dopo aver saltato i primi quattro caratteri, la terza e la quarta riga erano uguali e quindi considerate ripetute da uniq.
8. Come limitare il confronto a un numero impostato di caratteri
Simile al modo in cui salti i caratteri, puoi anche chiedere a uniq di limitare il confronto a un numero impostato di caratteri. Per questo, dovrai utilizzare l’opzione da riga di comando -w.
uniq -w [num-di-caratteri] [nome-file]
Ad esempio, supponiamo che il file contenga le seguenti righe:
Ora, se la richiesta è di limitare il confronto ai primi 3 caratteri, allora questo può essere fatto nel seguente modo:
uniq -w 3 file1
Ecco il comando sopra in azione:
Poiché i primi 3 caratteri della terza e quarta riga sono uguali, queste righe sono state considerate come ripetute. Pertanto, solo la terza è visualizzata nell’output.
9. Come far rendere il confronto di uniq insensibile al caso
Per impostazione predefinita, il confronto effettuato da uniq è di natura sensibile al caso. Tuttavia, puoi rendere il processo insensibile al caso utilizzando l’opzione da riga di comando -i.
Ad esempio, considera lo stesso caso di cui abbiamo discusso nella sezione precedente, solo che la quarta riga inizia con una H, O e W maiuscole.
Ora, se provi a eseguire lo stesso comando che abbiamo usato nella sezione precedente, vedrai che l’output è diverso:
Questo perché i primi tre caratteri della terza e della quarta riga sono diversi per uniq a causa del loro caso. In situazioni come queste, puoi rendere il confronto insensibile al caso utilizzando l’opzione -i.
10. Come far produrre a uniq un output terminato da NUL
Per impostazione predefinita, l’output prodotto da uniq è terminato da una nuova riga. Tuttavia, se lo desideri, puoi avere un output terminato da NUL invece (utile quando si tratta di uniq negli script). Questo può essere reso possibile utilizzando l’opzione da riga di comando -z.
uniq -z [nome-file]
Conclusione
Abbiamo coperto praticamente tutte le opzioni da riga di comando che il comando uniq offre, quindi pratica tutto ciò di cui abbiamo discusso qui e dovresti avere un’idea solida di come funziona uniq e quali funzionalità fornisce. Come sempre, in caso di domande o dubbi, consulta prima la pagina man del comando.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.