Il comando Uniq è utile per rimuovere o rilevare voci duplicate in un file. Questo tutorial spiega alcune delle opzioni della riga di comando uniq usate più di frequente che potresti trovare utili.
Il seguente file di test viene utilizzato in alcuni esempi per comprendere come funziona il comando uniq.
$ cat test aa aa bb bb bb xx
1. Utilizzo di base
Sintassi:
$ uniq [-options]
Ad esempio, quando il comando uniq viene eseguito senza alcuna opzione, rimuove le righe duplicate e visualizza le righe univoche come mostrato di seguito.
$ uniq test aa bb xx
2. Conta il numero di occorrenze usando l'opzione -c
Questa opzione serve per contare le occorrenze di righe nel file.
$ uniq -c test 2 aa 3 bb 1 xx
3. Stampa solo righe duplicate usando l'opzione -d
Questa opzione consente di stampare solo righe ripetute duplicate nel file. Come puoi vedere di seguito, questo non mostrava la riga "xx", poiché non è duplicata nel file di test.
$ uniq -d test aa bb
L'esempio precedente mostrava tutte le righe duplicate, ma solo una volta. Ma questa opzione -D stamperà tutte le righe duplicate nel file. Ad esempio, la riga "aa" era presente due volte nel file di test, quindi il seguente comando uniq ha visualizzato la riga "aa" due volte in questo output.
$ uniq -D test aa aa bb bb bb
4. Stampa solo linee univoche usando l'opzione -u
Questa opzione consente di stampare solo righe univoche nel file.
$ uniq -u test xx
Se ti piace eliminare le righe duplicate da un file usando un determinato modello, puoi usare il comando sed delete.
5. Limita il confronto a 'N' caratteri usando l'opzione -w
Questa opzione limita il confronto solo ai primi caratteri "N" specificati. Per questo esempio, usa il seguente file di input test2.
$ cat test2 hi Linux hi LinuxU hi LinuxUnix hi Unix
Il seguente comando uniq usando l'opzione 'w' confronta i primi 8 caratteri di righe nel file, quindi usando l'opzione 'c' stampa il numero di occorrenze di righe di file.
$ uniq -c -w 8 testNew 3 hi Linux 1 hi Unix
Il seguente comando uniq usando l'opzione 'w' confronta i primi 8 caratteri di righe nel file, quindi usando l'opzione 'D' stampa tutte le righe duplicate del file.
$ uniq -D -w 8 testNew hi Linux hi LinuxU hi LinuxUnix
6. Evita di confrontare i primi "N" caratteri usando l'opzione -s
Questa opzione salta il confronto dei primi caratteri "N" specificati. Per questo esempio, usa il seguente file di input test3.
$ cat test3 aabb xxbb bbc bbd
Il seguente comando uniq usando l'opzione 's' salta il confronto dei primi 2 caratteri delle righe nel file, quindi usando l'opzione 'D' stampa tutte le righe duplicate del file.
Qui, i 2 caratteri iniziali, ad esempio "aa" nella prima riga e "xx" nella seconda riga, non vengono confrontati e quindi i 2 caratteri successivi "bb" in entrambe le righe sono gli stessi, quindi vengono mostrati come righe duplicate.
$ uniq -D -s 2 test3 aabb xxbb
7. Evita di confrontare i primi campi "N" usando l'opzione -f
Questa opzione salta il confronto dei primi campi "N" di righe specificati nel file.
$ cat test2 hi hello Linux hi friend Linux hi hello LinuxUnix
Il seguente comando uniq usando l'opzione 'f' salta il confronto dei primi 2 campi di righe nel file, quindi usando l'opzione 'D' stampa tutte le righe duplicate del file.
Qui, i 2 campi iniziali, ovvero "ciao ciao" nella prima riga e "ciao amico" nella seconda riga non vengono confrontati e quindi il campo successivo "Linux" in entrambe le righe è lo stesso, quindi viene mostrato come righe duplicate.
$ uniq -D -f 2 test2 hi hello Linux hi friend Linux