NoPaste

RegExp-Kurs_04.sh

von tegula
SNIPPET_DESC:
Bitte Dateinamensendung ".txt" entfernen
SNIPPET_CREATION_TIME:
01.05.2022 17:11:18
SNIPPET_PRUNE_TIME:
Unendlich

SNIPPET_TEXT:
  1. #!/bin/sh
  2.  
  3. #' ---
  4. #' title: "Lösungsversuch zum RegEXP-Kurs im Debianforum"
  5. #' author: "tegula"
  6. #' date: " 01 05 2022"
  7. #' output: html_document
  8. #' ---
  9.  
  10.  
  11. #' ------------------------
  12. #' ------------------------
  13.  
  14. #' **Kurs-Teil:** 04 - Konkatenation, Alternation, Unterausdruecke
  15. #' **URL:** https://debianforum.de/forum/viewtopic.php?t=184095
  16. # ------------------------
  17. # ------------------------
  18.  
  19. #' ------------------------
  20. #' ------------------------
  21.  
  22. # 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.
  23. ## "Reiter" oder "|Läufer"
  24. egrep --line-number "Reiter|\|Läufer"  schwaebische-kunde.txt
  25.  
  26. #' ------------------------
  27. #' ------------------------
  28.  
  29.  
  30. # Aufgabe 2) Finde ein inhaltlich sinnvolles Beispiel fuer eine zwei- oder dreifach verschachtelte Alternation. ;-)
  31. egrep --line-number "Reit(er|ar)" schwaebische-kunde.txt
  32.  
  33. #' ------------------------
  34. #' ------------------------
  35.  
  36. # Aufgabe 3) Schreibe einen egrep-Ausdruck (nur mit Alternation und Unterausdruecken), um die Schreibweisen Maier, Meier, Mayer, Meier zu matchen.
  37. cat a3.txt
  38. printf "\n"
  39. egrep --line-number "M(a|e)(i|y)er" a3.txt
  40.  
  41. #' ------------------------
  42. #' ------------------------
  43.  
  44. # Aufgabe 4) Ergaenze (3) um die Schreibeweise Myer.
  45. cat a4.txt
  46. printf "\n"
  47. egrep --line-number "M(a|e)(i|y)er|Myer" a4.txt
  48.  
  49. #' ------------------------
  50. #' ------------------------
  51.  
  52. # Aufgabe 5) Finde alternative Ausdruecke fuer (3) und (4) (ohne andere RE-Operatoren zu verwenden, sondern nur indem du anders gruppierst).
  53. egrep --line-number "Maier|Meier|Mayer|Meier" a3.txt
  54. printf("\n")
  55. egrep --line-number "Maier|Meier|Mayer|Meier|Myer" a4.txt
  56.  
  57. #' ------------------------
  58. #' ------------------------
  59.  
  60. # Aufgabe 6) Versuche diese Aufgaben auch mit fgrep umzusetzen. Was sind deine Erkenntnisse?
  61.  
  62. ## ... zu Aufgabe 1:
  63. ### Musterdatei erzeugen
  64. printf "Reiter\n|Läufer" > muster_a1.txt
  65. # nach Mustern suchen
  66. fgrep -f muster_a1.txt schwaebische-kunde.txt
  67. ## ... zu Aufgabe 2:
  68. ### Musterdatei erzeugen
  69. printf "Reiter\nReitar" > muster_a2.txt
  70. ### Nach Mustern suchen
  71. fgrep -f muster_a2.txt schwaebische-kunde.txt
  72. ## ... zu Aufgabe 3:
  73. ### Musterdatei erzeugen
  74. printf "Maier\nMeier\nMayer\nMeier" > muster_a3.txt
  75. ### Nach Mustern suchen
  76. fgrep -f muster_a3.txt a3.txt
  77. ## ... zu Aufgabe 4:
  78. ### Musterdatei erzeugen
  79. printf "Maier\nMeier\nMayer\nMeier\nMyer" > muster_a4.txt
  80. ### Nach Mustern suchen
  81. fgrep -f muster_a4.txt a4.txt
  82. ## ... zu Aufgabe 5:
  83. ### --> **Erkenntnis:** Gruppiertung ist nicht möglich, da fgrep nur feste Suchmuster unterstützt (?).
  84.  
  85. #' ------------------------
  86. #' ------------------------
  87.  
  88. # Aufgabe 7) Braucht man runde Klammern um den gesamten Ausdruck wenn man eine Alternation (auf oberster Ebene) verwendet?
  89.  
  90. #' **ANTWORT:** Nein (vgl. Lösungsansatz zu Aufgabe 5).
  91.  
  92. #' ' ------------------------
  93. #' ------------------------
  94.  
  95. #' [ENDE]
  96.  

Quellcode

Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN