In computernetwerken wordt vaak gebruik gemaakt van de zogenaamde dotted quad notatie (ook gekend als quad-dotted notatie of dot-decimal notatie). Dit is een method om binaire getallen te schrijven in per octet gegroepeerde decimale getallen, waarbij de decimale getallen die corresponderen met elke groep van elkaar worden gescheiden door een punt. Zoals aangegeven in onderstaande figuur worden IPv4 adressen bijna uitsluitend voorgesteld in dotted quad notatie. Een IPv4 adres bestaat dan uit vier natuurlijke getallen kleiner dan 256 die van elkaar worden gescheiden door drie punten. Zo wordt bijvoorbeeld het hexadecimale getal 0xFF000000 in dotted quad notatie geschreven als 255.0.0.0.

IPv4 implementatie

Opgave

Het bestand IPv4.txt1 bevat een lijst van IPv4 adressen in dotted quad notatie. Elk IPv4 adres staat op een afzonderlijke regel, gevolgd door een spatie en een woord. Gevraagd wordt:

  1. Bepaal reguliere expressies voor elk van de onderstaande verzamelingen, waarbij $$\mathcal{I}$$ de verzameling van alle geldige IPv4 adressen in dotted quad notatie voorstelt. Probeer deze reguliere expressies zo kort mogelijk te houden.

    • $$\alpha = \{ i \in \mathcal{I}\,|\,$$ geen enkel natuurlijk getal in $$i$$ bestaat enkel uit twee cijfers $$\}$$

    • $$\beta = \{ i \in \mathcal{I}\,|\,$$ eerste en derde natuurlijk getal in $$i$$ zijn gelijk $$\}$$

    • $$\gamma = \{ i \in \mathcal{I}\,|\,$$ som van aantal vieren en aantal vijven in $$i$$ is even en groter dan nul $$\}$$

    • $$\delta = \{ i \in \mathcal{I}\,|\,$$ | $$i$$ bevat minstens 3 zessen maar i bevat geen opeenvolgende zessen $$\}$$

      opmerking: zessen gescheiden door een punt worden ook als opeenvolgend beschouwd.

    Gebruik een commando uit de grep familie om enkel die regels van het bestand IPv4.txt2 te selecteren die beginnen met een IPv4 adres in dotted quad notatie dat tot de opgegeven verzameling behoort.

  2. Beschouw de verzamelingen $$\alpha$$, $$\beta$$, $$\gamma$$ en $$\delta$$ zoals hierboven gedefinieerd. Gebruik nu deze verzamelingen om op de volgende manier een boodschap bestaande uit vier woorden te achterhalen:

    • Het eerste woord staat op de unieke regel met IPv4 adres uit verzameling $$\alpha \cap \beta$$

    • Het tweede woord staat op de unieke regel met IPv4 adres uit verzameling $$\beta \cap \gamma$$

    • Het derde woord staat op de unieke regel met IPv4 adres uit verzameling $$\gamma \cap \delta$$

    • Het vierde woord staat op de unieke regel met IPv4 adres uit verzameling $$\delta \cap \alpha$$

    Geef telkens een Unix commando dat elk van deze woorden opzoekt in het bestand en uitschrijft naar standaard uitvoer (zonder het patroon dat aan het woord voorafgaat). Hierbij is het dus niet toegelaten om het woord letterlijk uit te schrijven (bv. echo xxx).