Trovare righe duplicate in Linux con uniq

Mattepuffo's logo
Trovare righe duplicate in Linux con uniq

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!


Condividi

Commentami!