Opgave

In het tekstbestand streets.txt1 kan je de informatie van alle straten van Gent in JSON-formaat vinden. Dit bestand bevat slechts 1 regel, die begint met {"StratenInGent":[ gevolgd door een lijst van straatobjecten gescheiden door een komma, om te eindigen op ]}. Een straatobject begint met een {, eindigt met een } en bevat een aantal informatievelden gescheiden door een komma. Elk informatieveld heeft het formaat "naam veld":"waarde veld". De volgorde van de informatievelden is: postcode, straatcode, straatnaam, onpaar van, onpaar tot, paar van, paar tot, sector, stadsdeel, wijkNr, wijknaam. 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 ervoor dat elk van deze commando's bestaat uit zo weinig mogelijk tekens. Alle opdrachten moeten na elkaar uitgevoerd worden, waarbij de regel met hoofding steeds ongewijzigd moet blijven. Ter controle kan je gebruik maken van de meegeleverde bestanden streets.$$i$$.txt (1 ≤ $$i$$ ≤ 6), die telkens de inhoud van het bestand bevatten nadat de $$i$$-de opdracht werd uitgevoerd.

  1. Zorg er voor dat elk straatobject op zijn eigen lijn komt te staan. De {"StratenInGent":[ in het begin van het bestand en de ]} op het einde moeten weggelaten worden, net als de komma's tussen de straatobjecten. Zo moet

    {"StratenInGent":[{"postcode":"9000","straatcode":"2101","straatnaam":"Aaigemstraat","onpaar_van":"","onpaar_tot":"","paar_van":"","paar_tot":"","sector":"A40","stadsdeel":"Gent-Zuid","wijkNr":"22","wijknaam":"Stationsbuurt Noord"},{"postcode":"9000","straatcode":"7131","straatnaam":"Banierstraat","onpaar_van":"","onpaar_tot":"","paar_van":"2","paar_tot":"30","sector":"E32","stadsdeel":"Gent-Noordoost","wijkNr":"13","wijknaam":"Dampoort"},{"postcode":"9051","straatcode":"8511","straatnaam":"Broekkantstraat","onpaar_van":"1","onpaar_tot":"25","paar_van":"2","paar_tot":"60","sector":"J200","stadsdeel":"Gent-Zuid","wijkNr":"27","wijknaam":"Sint-Denijs-Westrem"}]}
            

    bijvoorbeeld omgezet worden naar (streets.1.txt2)

    {"postcode":"9000","straatcode":"2101","straatnaam":"Aaigemstraat","onpaar_van":"","onpaar_tot":"","paar_van":"","paar_tot":"","sector":"A40","stadsdeel":"Gent-Zuid","wijkNr":"22","wijknaam":"Stationsbuurt Noord"}
    {"postcode":"9000","straatcode":"7131","straatnaam":"Banierstraat","onpaar_van":"","onpaar_tot":"","paar_van":"2","paar_tot":"30","sector":"E32","stadsdeel":"Gent-Noordoost","wijkNr":"13","wijknaam":"Dampoort"}
    {"postcode":"9051","straatcode":"8511","straatnaam":"Broekkantstraat","onpaar_van":"1","onpaar_tot":"25","paar_van":"2","paar_tot":"60","sector":"J200","stadsdeel":"Gent-Zuid","wijkNr":"27","wijknaam":"Sint-Denijs-Westrem"}
            
  2. Laat telkens de naam van het informatieveld en het daaropvolgende dubbelpunt weg. Verwijder ook de accolades aan het begin en einde van elke regel. Toegepast op het vorige voorbeeld wordt dit (streets.2.txt3)

    "9000","2101","Aaigemstraat","","","","","A40","Gent-Zuid","22","Stationsbuurt Noord"
    "9000","7131","Banierstraat","","","2","30","E32","Gent-Noordoost","13","Dampoort"
    "9051","8511","Broekkantstraat","1","25","2","60","J200","Gent-Zuid","27","Sint-Denijs-Westrem"
            
  3. Verwijder de dubbele aanhalingstekens die rond de verschillende velden staan, en vervang de komma door een puntkomma als scheidingsteken. Toegepast op het vorige voorbeeld wordt dit (streets.3.txt4)

    9000;2101;Aaigemstraat;;;;;A40;Gent-Zuid;22;Stationsbuurt Noord
    9000;7131;Banierstraat;;;2;30;E32;Gent-Noordoost;13;Dampoort
    9051;8511;Broekkantstraat;1;25;2;60;J200;Gent-Zuid;27;Sint-Denijs-Westrem
            
  4. Verander de volgorde van de velden van postcode, straatcode, straatnaam, onpaar van, onpaar tot, paar van, paar tot, sector, stadsdeel, wijkNr, wijknaam naar straatnaam, wijknaam, stadsdeel, postcode, onpaar van, onpaar tot, paar van, paar tot. De velden straatcode, sector en wijkNr mogen weggelaten worden. Toegepast op het vorige voorbeeld wordt dit (streets.4.txt5)

    Aaigemstraat;Stationsbuurt Noord;Gent-Zuid;9000;;;;
    Banierstraat;Dampoort;Gent-Noordoost;9040;1;31;;
    Broekkantstraat;Sint-Denijs-Westrem;Gent-Zuid;9051;1;25;2;60
            
  5. Verwijder de regels waarvan het veld onpaar tot (veld 6) ontbreekt, het veld paar tot (veld 8) ontbreekt of waar beide velden ontbreken Toegepast op het vorige voorbeeld wordt dit (streets.5.txt6)

  6. Sorteer de straten aflopend volgens paar tot. Indien straten dezelfde paar tot waarde hebben, sorteer dan aflopend volgens onpaar tot. Indien ook onpaar tot gelijk is, sorteer dan alfabetisch op straatnaam. Toegepast op het vorige voorbeeld wordt dit (streets.6.txt7)

Richtlijnen bij het indienen

Volg aandachtig onderstaande richtlijnen bij het indienen van je oplossing: