NoPaste

Ausgabe_RegExp-Kurs_04

von tegula

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. $ # 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.
  21. $ ## "Reiter" oder "|Läufer"
  22. $ egrep --line-number "Reiter|\|Läufer"  schwaebische-kunde.txt
  23. 9:Und mancher deutsche Reitersmann
  24. 12:Fast musst' der Reiter die Maehre tragen.
  25. 22:Fuenfzig tuerkische Reiter daher,
  26. 37:Er schwingt es auf des Reiters Kopf,
  27. $
  28. $ #' ------------------------
  29. $ #' ------------------------
  30. $
  31. $
  32. $ # Aufgabe 2) Finde ein inhaltlich sinnvolles Beispiel fuer eine zwei- oder dreifach verschachtelte Alternation. ;-)
  33. $ egrep --line-number "Reit(er|ar)" schwaebische-kunde.txt
  34. 9:Und mancher deutsche Reitersmann
  35. 12:Fast musst' der Reiter die Maehre tragen.
  36. 22:Fuenfzig tuerkische Reiter daher,
  37. 37:Er schwingt es auf des Reiters Kopf,
  38. $
  39. $ #' ------------------------
  40. $ #' ------------------------
  41. $
  42. $ # Aufgabe 3) Schreibe einen egrep-Ausdruck (nur mit Alternation und Unterausdruecken), um die Schreibweisen Maier, Meier, Mayer, Meier zu matchen.
  43. $ cat a3.txt
  44. Maier
  45. Meier
  46. Müller
  47. Mayer
  48. Meier
  49. $ printf "\n"
  50.  
  51. $ egrep --line-number "M(a|e)(i|y)er" a3.txt
  52. 1:Maier
  53. 2:Meier
  54. 4:Mayer
  55. 5:Meier
  56. $
  57. $ #' ------------------------
  58. $ #' ------------------------
  59. $
  60. $ # Aufgabe 4) Ergaenze (3) um die Schreibeweise Myer.
  61. $ cat a4.txt
  62. Maier
  63. Meier
  64. Müller
  65. Mayer
  66. Meier
  67. Myer
  68. $ printf "\n"
  69.  
  70. $ egrep --line-number "M(a|e)(i|y)er|Myer" a4.txt
  71. 1:Maier
  72. 2:Meier
  73. 4:Mayer
  74. 5:Meier
  75. 6:Myer
  76. $
  77. $ #' ------------------------
  78. $ #' ------------------------
  79. $
  80. $ # Aufgabe 5) Finde alternative Ausdruecke fuer (3) und (4) (ohne andere RE-Operatoren zu verwenden, sondern nur indem du anders gruppierst).
  81. $ egrep --line-number "Maier|Meier|Mayer|Meier" a3.txt
  82. 1:Maier
  83. 2:Meier
  84. 4:Mayer
  85. 5:Meier
  86. $ printf "\n"
  87.  
  88. $ egrep --line-number "Maier|Meier|Mayer|Meier|Myer" a4.txt
  89. 1:Maier
  90. 2:Meier
  91. 4:Mayer
  92. 5:Meier
  93. 6:Myer
  94. $
  95. $ #' ------------------------
  96. $ #' ------------------------
  97. $
  98. $ # Aufgabe 6) Versuche diese Aufgaben auch mit fgrep umzusetzen. Was sind deine Erkenntnisse?
  99. $
  100. $ ## ... zu Aufgabe 1:
  101. $ ### Musterdatei erzeugen
  102. $ printf "Reiter\n|Läufer" > muster_a1.txt
  103. $ # nach Mustern suchen
  104. $ fgrep -f muster_a1.txt schwaebische-kunde.txt
  105. Und mancher deutsche Reitersmann
  106. Fast musst' der Reiter die Maehre tragen.
  107. Fuenfzig tuerkische Reiter daher,
  108. Er schwingt es auf des Reiters Kopf,
  109. $ ## ... zu Aufgabe 2:
  110. $ ### Musterdatei erzeugen
  111. $ printf "Reiter\nReitar" > muster_a2.txt
  112. $ ### Nach Mustern suchen
  113. $ fgrep -f muster_a2.txt schwaebische-kunde.txt
  114. Und mancher deutsche Reitersmann
  115. Fast musst' der Reiter die Maehre tragen.
  116. Fuenfzig tuerkische Reiter daher,
  117. Er schwingt es auf des Reiters Kopf,
  118. $ ## ... zu Aufgabe 3:
  119. $ ### Musterdatei erzeugen
  120. $ printf "Maier\nMeier\nMayer\nMeier" > muster_a3.txt
  121. $ ### Nach Mustern suchen
  122. $ fgrep -f muster_a3.txt a3.txt
  123. Maier
  124. Meier
  125. Mayer
  126. Meier
  127. $ ## ... zu Aufgabe 4:
  128. $ ### Musterdatei erzeugen
  129. $ printf "Maier\nMeier\nMayer\nMeier\nMyer" > muster_a4.txt
  130. $ ### Nach Mustern suchen
  131. $ fgrep -f muster_a4.txt a4.txt
  132. Maier
  133. Meier
  134. Mayer
  135. Meier
  136. Myer
  137. $ ## ... zu Aufgabe 5:
  138. $ ### --> **Erkenntnis:** Gruppiertung ist nicht möglich, da fgrep nur feste Suchmuster unterstützt (?).
  139. $
  140. $ #' ------------------------
  141. $ #' ------------------------
  142. $
  143. $ # Aufgabe 7) Braucht man runde Klammern um den gesamten Ausdruck wenn man eine Alternation (auf oberster Ebene) verwendet?
  144. $
  145. $ #' **ANTWORT:** Nein (vgl. Lösungsansatz zu Aufgabe 5).
  146. $
  147. $ #' ------------------------
  148. $ #' ------------------------
  149. $
  150. $ #' [ENDE]
  151. $
  152.  

Quellcode

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