Opgave

Het bestand pathnames.txt1 bevat een lijst van padnamen naar bestanden in een unix directorystructuur. Hierbij staat elke padnaam op een afzonderlijke regel, en worden padnamen opgebouwd volgens het formaat

[/]<directorynaam_1>/<directorynaam_2>/.../<directorynaam_n>/<bestandsnaam>
Een padnaam bestaat hierbij uit n directorynamen, waarbij de slash vooraan optioneel is (om onderscheid te maken tussen absolute en relatieve padnamen). Directorynamen bestaan uitsluitend uit cijfers en kleine letters en bestandsnamen bestaan uitsluitend uit kleine letters. Gevraagd wordt:

  1. Bepaal reguliere expressies voor elk van de onderstaande verzamelingen, waarbij $$\mathcal{P}$$ de verzameling van alle geldige padnamen voorstelt in het formaat dat hierboven werd beschreven. Probeer deze reguliere expressies zo kort mogelijk te houden.

    • $$\alpha = \{ p \in \mathcal{P}\,|\,$$ $$p$$ is relatieve padnaam, waarbij elke directorynaam exact twee cijfers bevat $$\}$$

      voorbeeld: bo28/ze2zti9/drl1au9f/woord $$\in \alpha$$
    • $$\beta = \{ p \in \mathcal{P}\,|\,$$ er bestaat een paar opeenvolgende karakters dat in minstens drie opeenvolgende directory- of bestandsnamen voorkomt binnen $$p$$ $$\}$$

      voorbeeld: /abc/d4o47wip/9d4/oud4v/woord $$\in \beta$$
    • $$\gamma = \{ p \in \mathcal{P}\,|\,$$ elke directorynaam van $$p$$ is alternerende reeks van cijfers en letters $$\}$$

      voorbeeld: /8o4/b9z2/f7i2/woord $$\in \gamma$$
    • $$\delta = \{ p \in \mathcal{P}\,|\,$$ laatste karakter van elke directorynaam in $$p$$ is verschillend van eerste karakter van volgende directory- of bestandsnaam $$\}$$

    Gebruik een commando uit de grep familie om enkel die regels van het bestand pathnames.txt2 te selecteren die padnamen bevatten die behoren tot de opgegeven verzameling.

  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 is de bestandsnaam op de unieke regel met padnaam uit de verzameling $$\alpha \cap \beta$$

    • Het tweede woord is de bestandsnaam op de unieke regel met padnaam uit de verzameling $$\beta \cap \gamma$$

    • Het derde woord is de bestandsnaam op de unieke regel met padnaam uit de verzameling $$\gamma \cap \delta$$

    • Het vierde woord is de bestandsnaam op de unieke regel met padnaam uit de 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).