Hoe kan ik dubbele regels verwijderen?
Een andere opdracht die vaak samen met sort wordt gebruikt is uniq,
waarvan de taak is om dubbele regels te verwijderen.
Meer specifiek:
hij verwijdert aangrenzende dubbele regels.
Als een bestand bevat:
2017-07-03
2017-07-03
2017-08-03
2017-08-03
dan produceert uniq:
2017-07-03
2017-08-03
maar als het bevat:
2017-07-03
2017-08-03
2017-07-03
2017-08-03
dan print uniq alle vier de regels.
De reden is dat uniq is gebouwd om met zeer grote bestanden te werken.
Om niet-aangrenzende dubbele regels uit een bestand te verwijderen,
zou het het hele bestand in het geheugen moeten houden
(of in elk geval
alle unieke regels die tot dan toe zijn gezien).
Door alleen aangrenzende duplicaten te verwijderen,
hoeft het alleen de meest recente unieke regel in het geheugen te bewaren.
Deze oefening maakt deel uit van de cursus
Introductie tot de shell
Oefeninstructies
Schrijf een pipeline die:
- de tweede kolom uit
seasonal/winter.csvhaalt, - het woord "Tooth" uit de output verwijdert zodat alleen tandnamen overblijven,
- de output sorteert zodat alle voorkomens van een bepaalde tandnaam naast elkaar staan; en
- elke tandnaam één keer weergeeft met een telling van hoe vaak hij voorkomt.
Het begin van je pipeline is hetzelfde als in de vorige oefening:
cut -d , -f 2 seasonal/winter.csv | grep -v Tooth
Breid dit uit met een sort-commando, en gebruik uniq -c om unieke regels weer te geven met een telling van hoe vaak elke regel voorkomt, in plaats van uniq en wc te gebruiken.
Praktische interactieve oefening
Zet theorie om in actie met een van onze interactieve oefeningen.
Begin met trainen