Trovare righe duplicate in Linux con uniq
Dalla man page:
uniq - report or omit repeated lines
Quindi, attraverso questo comando, possiamo facilmente filtrare delle righe duplicate dentro ad un file.
Supponiamo di avere un file di testo così:
RIGA
RIGA
RIGA.
RIGA BHO.
RIGA.
RIGA
Il comando restituirà questo:
$ uniq test.txt
RIGA
RIGA.
RIGA BHO.
RIGA.
RIGA
Questo perchè lavora solo sulle righe adiacenti.
Si puà rimediare usando sort:
$ sort test.txt | uniq
RIGA
RIGA.
RIGA BHO.
In sostanza con sort ordiniamo le righe (in questo modo le righe uguali sono adiacenti), e poi passiamo l'output a uniq.
Altre opzioni interessanti sono:
- -u -> stampa solo le righe univoche
- -c -> che identifica quante volte compare un riga
- -d -> stampa solo i duplicati
Qua sotto gli esempi:
$ sort test.txt | uniq -c
2
3 RIGA
2 RIGA.
1 RIGA BHO.$ sort test.txt | uniq -u
RIGA BHO.$ sort test.txt | uniq -d
RIGA
RIGA.
Enjoy!
linux sort uniq
Commentami!