Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

Schrijf een pipeline die:

  • de tweede kolom uit seasonal/winter.csv haalt,
  • 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