Ausgabe_RegExp-Kurs_04
von tegula- SNIPPET_TEXT:
-
- $ #!/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
- 9:Und mancher deutsche Reitersmann
- 12:Fast musst' der Reiter die Maehre tragen.
- 22:Fuenfzig tuerkische Reiter daher,
- 37:Er schwingt es auf des Reiters Kopf,
- $
- $ #' ------------------------
- $ #' ------------------------
- $
- $
- $ # Aufgabe 2) Finde ein inhaltlich sinnvolles Beispiel fuer eine zwei- oder dreifach verschachtelte Alternation. ;-)
- $ egrep --line-number "Reit(er|ar)" schwaebische-kunde.txt
- 9:Und mancher deutsche Reitersmann
- 12:Fast musst' der Reiter die Maehre tragen.
- 22:Fuenfzig tuerkische Reiter daher,
- 37:Er schwingt es auf des Reiters Kopf,
- $
- $ #' ------------------------
- $ #' ------------------------
- $
- $ # Aufgabe 3) Schreibe einen egrep-Ausdruck (nur mit Alternation und Unterausdruecken), um die Schreibweisen Maier, Meier, Mayer, Meier zu matchen.
- $ cat a3.txt
- Maier
- Meier
- Müller
- Mayer
- Meier
- $ printf "\n"
- $ egrep --line-number "M(a|e)(i|y)er" a3.txt
- 1:Maier
- 2:Meier
- 4:Mayer
- 5:Meier
- $
- $ #' ------------------------
- $ #' ------------------------
- $
- $ # Aufgabe 4) Ergaenze (3) um die Schreibeweise Myer.
- $ cat a4.txt
- Maier
- Meier
- Müller
- Mayer
- Meier
- Myer
- $ printf "\n"
- $ egrep --line-number "M(a|e)(i|y)er|Myer" a4.txt
- 1:Maier
- 2:Meier
- 4:Mayer
- 5:Meier
- 6:Myer
- $
- $ #' ------------------------
- $ #' ------------------------
- $
- $ # 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
- 1:Maier
- 2:Meier
- 4:Mayer
- 5:Meier
- $ printf "\n"
- $ egrep --line-number "Maier|Meier|Mayer|Meier|Myer" a4.txt
- 1:Maier
- 2:Meier
- 4:Mayer
- 5:Meier
- 6:Myer
- $
- $ #' ------------------------
- $ #' ------------------------
- $
- $ # 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
- Und mancher deutsche Reitersmann
- Fast musst' der Reiter die Maehre tragen.
- Fuenfzig tuerkische Reiter daher,
- Er schwingt es auf des Reiters Kopf,
- $ ## ... zu Aufgabe 2:
- $ ### Musterdatei erzeugen
- $ printf "Reiter\nReitar" > muster_a2.txt
- $ ### Nach Mustern suchen
- $ fgrep -f muster_a2.txt schwaebische-kunde.txt
- Und mancher deutsche Reitersmann
- Fast musst' der Reiter die Maehre tragen.
- Fuenfzig tuerkische Reiter daher,
- Er schwingt es auf des Reiters Kopf,
- $ ## ... zu Aufgabe 3:
- $ ### Musterdatei erzeugen
- $ printf "Maier\nMeier\nMayer\nMeier" > muster_a3.txt
- $ ### Nach Mustern suchen
- $ fgrep -f muster_a3.txt a3.txt
- Maier
- Meier
- Mayer
- Meier
- $ ## ... zu Aufgabe 4:
- $ ### Musterdatei erzeugen
- $ printf "Maier\nMeier\nMayer\nMeier\nMyer" > muster_a4.txt
- $ ### Nach Mustern suchen
- $ fgrep -f muster_a4.txt a4.txt
- Maier
- Meier
- Mayer
- Meier
- Myer
- $ ## ... 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]
- $
Quellcode
Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN