Hur tar jag bort dubbletter av rader?
Ett annat kommando som ofta används tillsammans med sort är uniq,
som tar bort duplicerade rader.
Närmare bestämt tar det bort angränsande duplicerade rader.
Om en fil innehåller:
2017-07-03
2017-07-03
2017-08-03
2017-08-03
kommer uniq att producera:
2017-07-03
2017-08-03
Men om filen innehåller:
2017-07-03
2017-08-03
2017-07-03
2017-08-03
skriver uniq ut alla fyra rader.
Anledningen är att uniq är byggt för att hantera mycket stora filer.
För att ta bort icke-angränsande dubbletter skulle kommandot behöva hålla hela filen i minnet
(eller åtminstone alla unika rader som setts hittills).
Genom att bara ta bort angränsande dubbletter behöver det bara hålla den senaste unika raden i minnet.
Den här övningen är en del av kursen
Introduktion till Shell
Övningsinstruktioner
Bygg en pipeline som:
- hämtar den andra kolumnen från
seasonal/winter.csv, - tar bort ordet "Tooth" från utdata så att bara tandnamn visas,
- sorterar utdata så att alla förekomster av ett visst tandnamn hamnar intill varandra, och
- visar varje tandnamn en gång tillsammans med en räkning av hur ofta det förekommer.
Början på din pipeline är densamma som i föregående övning:
cut -d , -f 2 seasonal/winter.csv | grep -v Tooth
Bygg ut den med ett sort-kommando och använd uniq -c för att visa unika rader med en räkning av hur ofta var och en förekommer, i stället för att kombinera uniq och wc.
Interaktiv övning med praktiskt arbete
Gör teori till handling med en av våra interaktiva övningar
Starta övningen