Van 7-23 februari 2014 organiseerde het Internationaal Olympisch Commité1 (IOC) haar Olympische Winterspelen in Sotchi, Rusland.

Sotchi 2014
Logo van de olympische winterspelen van 2014 in Sotchi, Rusland.

In totaal werden er tijdens die Spelen 98 wedstrijden georganiseerd in 15 verschillende wintersportdisciplines. De wedstrijden vonden plaats in twee clusters van nieuwe locaties: een Olympisch Park gebouwd in Sotsji's Imeretinsky-vallei aan de kust van de Zwarte Zee, met het Olympisch Stadion Fisht2 en de indoor-locaties van de Spelen op loopafstand, en sneeuwevenementen in het resort van Krasnaya Polyana3.

De Olympische Winterspelen van 2014 waren de duurste Olympische Spelen uit de geschiedenis. Hoewel oorspronkelijk begroot op 12 miljard dollar, zorgden verschillende factoren ervoor dat het budget groeide naar 51 miljard dollar, wat meer dan drie keer de kost is van de laatste Olympische Spelen in Londen en ruim boven de geschatte kost van 44 miljard dollar voor de Olympische Zomerspelen van 2008 in Beijing.

De aanloop naar deze Spelen werd gekenmerkt door een aantal grote controverses, waaronder beschuldigingen dat corruptie onder ambtenaren leidde tot bovengenoemde kostenoverschrijdingen, zorgen over de veiligheid van LGBT4-atleten en -toeschouwers als gevolg van recente overheidsacties, protesten van etnische Circassian-activisten over het gebruik van een locatie waarvan ze geloven dat er in de 19e eeuw een volkerenmoord plaatsvond, en bedreigingen door jihadistische groepen verbonden aan de opstand in de Noord-Kaukasus. In 2016 bevestigde een onafhankelijk rapport in opdracht van het World Anti-Doping Agency5 (WADA) beschuldigingen dat van ten minste eind 2011 tot augustus 2015 meer dan duizend Russische atleten in verschillende sporten, waaronder zomer-, winter- en Paralympische sporten, profiteerden van een door de overheid georganiseerde doofpotoperatie. In december 2017 besliste het IOC om het Russisch Olympisch Comité te schorsen, met een optie voor schone atleten om als onafhankelijke deel te nemen aan de Olympische Winterspelen van 2018. Het IOC stelde dat het door de Russische staat gesponsorde dopingprogramma

[...] één van de ergste aanslagen was tegen de integriteit en de reputatie van de Olympische Spelen.

Opgave

Het tekstbestand winterolympics.txt6 bevat informatie over alle medailles die uitgereikt werden tijdens de Olympische Winterspelen van 2014. Elke regel van het bestand bevat informatie over één van de uitgereikte medailles. Deze omschrijving bestaat uit de volgende zes velden die van elkaar worden gescheiden door tabs: i) wintersportdiscipline, ii) wedstrijd, iii) doelgroep, iv) naam van winnaar(s), v) nationaliteit van de winnaar(s) en vi) kleur medaille (goud, zilver of brons). Als er meerdere medaillewinnaars zijn van een bepaalde kleur, dan worden hun namen (vierde veld) en nationaliteiten (vijfde veld) van elkaar gescheiden door komma's. Voor en na die komma's komen nooit spaties voor. Je mag ervan uitgaan dat de velden geen tabs of puntkomma's bevatten.

Gevraagd wordt om — gebruik makend van de teksteditors vi of vim — een reeks commando's op te stellen die achtereenvolgens de volgende opdrachten uitvoeren. Probeer voor elke opdracht zo weinig mogelijk commando's te gebruiken en zorg er voor dat elk van deze commando's bestaat uit zo weinig mogelijk tekens. De commando's mogen geen programmeerbare filters (bv. awk) gebruiken. Alle opdrachten moeten na elkaar uitgevoerd worden. De opdrachten mogen de eerste regel (hoofding) niet wijzigen, tenzij dit expliciet anders vermeld staat. Ter controle kan je gebruikmaken van de meegeleverde bestanden winterolympics.i.txt (ZIP7), die telkens de inhoud van het bestand bevatten nadat de $$i$$-de opdracht werd uitgevoerd.

  1. Vervang alle scheidingstekens (tabs) door puntkomma's en verwijder alle spaties vooraan en achteraan de informatievelden. Deze wijzigingen moeten ook doorgevoerd worden op de eerste regel. Zo moet

     sport	  onderdeel 	 groep 	   naam  	 land 	  medaille
    Langlaufen	50km vrije stijl	 mannen	Maksim Vylegsjanin  	RUS	zilver
    kunstrijden		paren	    Aliona Savchenko,Robin Szolkowy    	GER	brons
    curling		vrouwen	Jennifer Jones,Kaitlyn Lawes,Dawn McEwen,Jill Officer,Kirsten Wall	CAN	goud
        Alpineskiën  	Super G	mannen	Jan Hudec,Bode Miller	CAN,USA	   brons
    Langlaufen 	Sprint	vrouwen	Vesna Fabjan	 SLO	brons
     kunstrijden		    paren	  Tatjana Volosozjar,Maksim Trankov	RUS	goud
    …

    bijvoorbeeld omgezet worden naar (winterolympics.1.txt8)

    sport;onderdeel;groep;naam;land;medaille
    Langlaufen;50 km vrije stijl;mannen;Maksim Vylegsjanin;RUS;zilver
    kunstrijden;;paren;Aliona Savchenko,Robin Szolkowy;GER;brons
    curling;;vrouwen;Jennifer Jones,Kaitlyn Lawes,Dawn McEwen,Jill Officer,Kirsten Wall;CAN;goud
    Alpineskiën;Super G;mannen;Jan Hudec,Bode Miller;CAN,USA;brons
    Langlaufen;Sprint;vrouwen;Vesna Fabjan;SLO;brons
    kunstrijden;;paren;Tatjana Volosozjar,Maksim Trankov;RUS;goud
    …
  2. Schrap alle Russische medaillewinnaars (nationaliteit = RUS) uit het bestand. We krijgen dan (winterolympics.2.txt9)

    sport;onderdeel;groep;naam;land;medaille
    kunstrijden;;paren;Aliona Savchenko,Robin Szolkowy;GER;brons
    curling;;vrouwen;Jennifer Jones,Kaitlyn Lawes,Dawn McEwen,Jill Officer,Kirsten Wall;CAN;goud
    Alpineskiën;Super G;mannen;Jan Hudec,Bode Miller;CAN,USA;brons
    Langlaufen;Sprint;vrouwen;Vesna Fabjan;SLO;brons
    snowboarden;Halfpipe;vrouwen;Torah Bright;AUS;zilver
    biatlon;10km sprint;mannen;Dominik Landertinger;AUT;zilver
    …
  3. Zet alle wintersportdisciplines (eerste veld) en wedstrijden (tweede veld) om naar kleine letters. We krijgen dan (winterolympics.3.txt10)

    sport;onderdeel;groep;naam;land;medaille
    kunstrijden;;paren;Aliona Savchenko,Robin Szolkowy;GER;brons
    curling;;vrouwen;Jennifer Jones,Kaitlyn Lawes,Dawn McEwen,Jill Officer,Kirsten Wall;CAN;goud
    alpineskiën;super g;mannen;Jan Hudec,Bode Miller;CAN,USA;brons
    langlaufen;sprint;vrouwen;Vesna Fabjan;SLO;brons
    snowboarden;halfpipe;vrouwen;Torah Bright;AUS;zilver
    …
  4. Gebruik het formaat <eerste naam> en <tweede naam> in het veld met de namen van de atleten bij alle medailles die uitgereikt werden aan twee atleten. Gebruik het formaat <eerste naam>, ... in het veld met de namen van de atleten bij alle medailles die werden uitgereikt aan meer dan twee atleten. We krijgen dan (winterolympics.4.txt11)

    sport;onderdeel;groep;naam;land;medaille
    kunstrijden;;paren;Aliona Savchenko en Robin Szolkowy;GER;brons
    curling;;vrouwen;Jennifer Jones, ...;CAN;goud
    alpineskiën;super g;mannen;Jan Hudec en Bode Miller;CAN,USA;brons
    langlaufen;sprint;vrouwen;Vesna Fabjan;SLO;brons
    snowboarden;halfpipe;vrouwen;Torah Bright;AUS;zilver
    …
  5. Sorteer de uitgereikte medailles eerst alfabetisch volgens de eerste drie velden (zonder onderscheid te maken tussen hoofdletters en kleine letters), en tenslotte volgens de kleur van de uitgereikte medaille (zesde veld) in de volgorde goud, zilver, brons. We krijgen dan (winterolympics.5.txt12)

    sport;onderdeel;groep;naam;land;medaille
    alpineskiën;afdaling;mannen;Matthias Mayer;AUT;goud
    alpineskiën;afdaling;mannen;Christof Innerhofer;ITA;zilver
    alpineskiën;afdaling;mannen;Kjetil Jansrud;NOR;brons
    alpineskiën;afdaling;vrouwen;Dominique Gisin en Tina Maze;SUI,SLO;goud
    alpineskiën;afdaling;vrouwen;Lara Gut;SUI;brons
    alpineskiën;combinatie;mannen;Sandro Viletta;SUI;goud
    …