#!/bin/sh #' --- #' title: "Lösungsversuch zum RegEXP-Kurs im Debianforum" #' author: "tegula" #' date: " 01 05 2022" #' output: html_document #' --- #' ------------------------ #' ------------------------ #' **Kurs-Teil:** 04 - Konkatenation, Alternation, Unterausdruecke #' **URL:** https://debianforum.de/forum/viewtopic.php?t=184095 # ------------------------ # ------------------------ #' ------------------------ #' ------------------------ # Aufgabe 1) Schreibe einen egrep-Ausdruck, der sowohl eine Alternation enthaelt als auch das Pipezeichen literal matcht und wende ihn auf einen dazu passenden Eingabetext an. ## "Reiter" oder "|Läufer" egrep --line-number "Reiter|\|Läufer" schwaebische-kunde.txt #' ------------------------ #' ------------------------ # Aufgabe 2) Finde ein inhaltlich sinnvolles Beispiel fuer eine zwei- oder dreifach verschachtelte Alternation. ;-) egrep --line-number "Reit(er|ar)" schwaebische-kunde.txt #' ------------------------ #' ------------------------ # Aufgabe 3) Schreibe einen egrep-Ausdruck (nur mit Alternation und Unterausdruecken), um die Schreibweisen Maier, Meier, Mayer, Meier zu matchen. cat a3.txt printf "\n" egrep --line-number "M(a|e)(i|y)er" a3.txt #' ------------------------ #' ------------------------ # Aufgabe 4) Ergaenze (3) um die Schreibeweise Myer. cat a4.txt printf "\n" egrep --line-number "M(a|e)(i|y)er|Myer" a4.txt #' ------------------------ #' ------------------------ # Aufgabe 5) Finde alternative Ausdruecke fuer (3) und (4) (ohne andere RE-Operatoren zu verwenden, sondern nur indem du anders gruppierst). egrep --line-number "Maier|Meier|Mayer|Meier" a3.txt printf("\n") egrep --line-number "Maier|Meier|Mayer|Meier|Myer" a4.txt #' ------------------------ #' ------------------------ # Aufgabe 6) Versuche diese Aufgaben auch mit fgrep umzusetzen. Was sind deine Erkenntnisse? ## ... zu Aufgabe 1: ### Musterdatei erzeugen printf "Reiter\n|Läufer" > muster_a1.txt # nach Mustern suchen fgrep -f muster_a1.txt schwaebische-kunde.txt ## ... zu Aufgabe 2: ### Musterdatei erzeugen printf "Reiter\nReitar" > muster_a2.txt ### Nach Mustern suchen fgrep -f muster_a2.txt schwaebische-kunde.txt ## ... zu Aufgabe 3: ### Musterdatei erzeugen printf "Maier\nMeier\nMayer\nMeier" > muster_a3.txt ### Nach Mustern suchen fgrep -f muster_a3.txt a3.txt ## ... zu Aufgabe 4: ### Musterdatei erzeugen printf "Maier\nMeier\nMayer\nMeier\nMyer" > muster_a4.txt ### Nach Mustern suchen fgrep -f muster_a4.txt a4.txt ## ... zu Aufgabe 5: ### --> **Erkenntnis:** Gruppiertung ist nicht möglich, da fgrep nur feste Suchmuster unterstützt (?). #' ------------------------ #' ------------------------ # Aufgabe 7) Braucht man runde Klammern um den gesamten Ausdruck wenn man eine Alternation (auf oberster Ebene) verwendet? #' **ANTWORT:** Nein (vgl. Lösungsansatz zu Aufgabe 5). #' ' ------------------------ #' ------------------------ #' [ENDE]