Come posso rimuovere le righe duplicate?
Un altro comando spesso usato insieme a sort è uniq,
il cui compito è rimuovere le righe duplicate.
Più nello specifico,
rimuove le righe duplicate adiacenti.
Se un file contiene:
2017-07-03
2017-07-03
2017-08-03
2017-08-03
allora uniq produrrà:
2017-07-03
2017-08-03
ma se contiene:
2017-07-03
2017-08-03
2017-07-03
2017-08-03
allora uniq stamperà tutte e quattro le righe.
Il motivo è che uniq è pensato per lavorare con file molto grandi.
Per rimuovere righe non adiacenti da un file,
dovrebbe tenere l'intero file in memoria
(o almeno
tutte le righe uniche viste finora).
Rimuovendo solo i duplicati adiacenti,
deve tenere in memoria solo l'ultima riga unica più recente.
Questo esercizio fa parte del corso
Introduzione alla Shell
Istruzioni dell'esercizio
Scrivi una pipeline per:
- ottenere la seconda colonna da
seasonal/winter.csv, - rimuovere la parola "Tooth" dall'output in modo che vengano mostrati solo i nomi dei denti,
- ordinare l'output in modo che tutte le occorrenze di uno stesso nome di dente siano adiacenti; e
- visualizzare ogni nome di dente una sola volta insieme al conteggio di quante volte compare.
L'inizio della tua pipeline è lo stesso dell'esercizio precedente:
cut -d , -f 2 seasonal/winter.csv | grep -v Tooth
Estendila con un comando sort e usa uniq -c per visualizzare le righe uniche con il conteggio di quante volte ciascuna compare, invece di usare uniq e wc.
Esercizio pratico interattivo
Passa dalla teoria alla pratica con uno dei nostri esercizi interattivi
Inizia esercizio