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}\,|\,$$ alle directorynamen van $$p$$ zijn even lang en bevatten 3, 4 of 5 karakters $$\}$$

    • $$\beta = \{ p \in \mathcal{P}\,|\,$$ $$p$$ bestaat uit drie directorynamen, waarbij het laatste karakter van elke directorynaam gelijk is aan het eerste karakter van de volgende directory- of bestandsnaam $$\}$$

      voorbeeld: /abc/cx2w4/456w/woord $$\in \beta$$
    • $$\gamma = \{ p \in \mathcal{P}\,|\,$$ geen enkele directorynaam van $$p$$ is juist 4 karakters lang $$\}$$

    • $$\delta = \{ p \in \mathcal{P}\,|\,$$ elke directorynaam van $$p$$ bestaat enkel uit letters of enkel uit cijfers $$\}$$

      voorbeelden: /abc/1234/def/567/woord $$\in \delta$$
        \abc/1t34/d9f/567/woord $$\not\in \delta$$

    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).