NoPaste

Ausgabe_nur_Musterdateien_RegExp_Kurs_03

von tegula

SNIPPET_TEXT:
  1. $ #!/bin/sh
  2. $
  3. $ #' ---
  4. $ #' title: "Lösungsversuch zum RegEXP-Kurs 03 - egrep"
  5. $ #' author: "tegula"
  6. $ #' date: " 29 4 2022"
  7. $ #' output: html_document
  8. $ #' ---
  9. $
  10. $
  11. $
  12. $ # ------------------------
  13. $ # ------------------------
  14. $
  15. $ #' **Ursprünglich Aufgaben:** https://debianforum.de/forum/viewtopic.php?t=184043
  16. $
  17. $ #' ** Hier bearbeite Variante:** "Arbeite vorerst mal nur mit den Musterdateien und gehe dafuer die Einheit nochmal durch.
  18.  Mit Musterdateien ist es wie ich beschreibe. Wenn du es auf der Kommandozeile angibst, dann treten weitere Effekte auf, die
  19.  dich nun verwirren" ( https://debianforum.de/forum/viewtopic.php?p=1300875#p1300875 )
  20. $ # ------------------------
  21. $ # ------------------------
  22. $
  23. $
  24. $ # AUfgabe 1 bis 6
  25. $ for musterdatei in a1.txt a2.txt a3.txt a4.txt a5.txt a6.txt; do
  26. >
  27. >   printf "${musterdatei}: " # Aufgaben nummer bzw. Dateiname ausgeben
  28. >   cat  ${musterdatei} # Inhalt der Musterdatei ausgeben
  29. >   printf "\n \n" # Zwei Zeilenumbrüche ausgeben (= mindestens eine Leerzeile)
  30. >   egrep --line-number -f ${musterdatei} schwaebische-kunde.txt # Muster in schwaebische-kunde.txt suchen
  31. >   printf "******\n\n" # Trenner zwischen einzelnen Aufgaben
  32. >> done
  33. a1.txt:
  34. a1.txt: Reiter
  35.  
  36. 9:Und mancher deutsche Reitersmann
  37. 12:Fast musst' der Reiter die Maehre tragen.
  38. 22:Fuenfzig tuerkische Reiter daher,
  39. 37:Er schwingt es auf des Reiters Kopf,
  40. ******
  41.  
  42. a2.txt:
  43. a2.txt: Viel Steine
  44.  
  45. 8:Viel Steine gab's und wenig Brot,
  46. ******
  47.  
  48. a3.txt:
  49. a3.txt: heil'gen
  50.  
  51. 4:Zum heil'gen Land gezogen kam,
  52. ******
  53.  
  54. a4.txt:
  55. a4.txt: Er sprach: "Sagt an,
  56.  
  57. 53:Er sprach: "Sagt an, mein Ritter werth!
  58. ******
  59.  
  60. a5.txt:
  61. a5.txt: eben\.
  62.  
  63. 18:Und kostet's ihn das eigne Leben.
  64. ******
  65.  
  66. a6.txt:
  67. a6.txt: \?
  68.  
  69. 54:Wer hat Euch solche Streich' gelehrt?"
  70. ******
  71.  
  72. $
  73. $ # ------------------------
  74. $ # ------------------------
  75. $
  76. $ # Aufgabe 7 (fgrep statt egrep)
  77. $ ## --> Unterschied zu Aufgabe 1-6 (egrep): Fragezeichen ("?") und (".") müssen nicht escapet werden, weil fgrep (im Gegens
  78. atz zu egrep) die, ihm übergebenen, Muster, immer als literale Wörter interpretiert.
  79. $
  80. $ for musterdatei in a1.txt a2.txt a3.txt a4.txt a5_fuer_fgrep.txt a6_fuer_fgrep.txt; do
  81. >   printf "${musterdatei}: " # Aufgaben nummer bzw. Dateiname ausgeben
  82. >   cat  ${musterdatei} # Inhalt der Musterdatei ausgeben
  83. >   printf "\n \n" # Zwei Zeilenumbrüche ausgeben (= mindestens eine Leerzeile)
  84. >
  85. >   fgrep --line-number -f ${musterdatei} schwaebische-kunde.txt # Muster in schwaebische-kunde.txt suchen
  86. >   printf "******\n\n" # Trenner zwischen einzelnen Aufgaben
  87. > done
  88. a1.txt:
  89. a1.txt: Reiter
  90.  
  91. 9:Und mancher deutsche Reitersmann
  92. 12:Fast musst' der Reiter die Maehre tragen.
  93. 22:Fuenfzig tuerkische Reiter daher,
  94. 37:Er schwingt es auf des Reiters Kopf,
  95. ******
  96.  
  97. a2.txt:
  98. a2.txt: Viel Steine
  99.  
  100. 8:Viel Steine gab's und wenig Brot,
  101. ******
  102.  
  103. a3.txt:
  104. a3.txt: heil'gen
  105.  
  106. 4:Zum heil'gen Land gezogen kam,
  107. ******
  108.  
  109. a4.txt:
  110. a4.txt: Er sprach: "Sagt an,
  111.  
  112. 53:Er sprach: "Sagt an, mein Ritter werth!
  113. ******
  114.  
  115. a5_fuer_fgrep.txt:
  116. a5_fuer_fgrep.txt: eben.
  117.  
  118. 18:Und kostet's ihn das eigne Leben.
  119. ******
  120.  
  121. a6_fuer_fgrep.txt:
  122. a6_fuer_fgrep.txt: ?
  123.  
  124. 54:Wer hat Euch solche Streich' gelehrt?"
  125. ******
  126.  
  127. $
  128. $ # ------------------------
  129. $ # ------------------------
  130. $
  131. $ # ------------------------
  132. $ # ------------------------
  133. $
  134. $ # Aufgabe 8
  135. $
  136. $ ## --> Die Mustersuche wird innerhalb der Datei RegExp-Kurs_02_Aufgabe_14.R ( https://debianforum.de/forum/pastebin/?mode=
  137. view&s=41639 ) durchgeführt.
  138. $
  139. $ # Klammern
  140. $
  141. $ ## --> Klammern haben eine Sonderbedeutung innerhalb von egrep --> müssen (auch in Musterdatei) escapet werdem
  142. $ cat  a8_klammern.txt # Inhalt der Musterdatei ausgeben
  143. \(
  144. \)
  145. \[
  146. \]
  147. \{
  148. \}
  149. $ egrep --line-number -f a8_klammern.txt RegExp-Kurs_02_Aufgabe_14.R
  150. 2:#' title: " Aufgabe 14 (RegExp-Kurs 02: Metazeichen & Escaping)"
  151. 11:# R-Pakete (Bibliotheken) laden
  152. 19:#' **Aufgabenstellung:** "[Aufgabe] 14) Auf die vorigen Aufgabe aufbauend: Schreibe ein Programm, das den escapeten Text
  153. wieder einliest und eine sprachliche Beschreibung davon ausgibt, aehnlich wie in (5). Pruefe damit deine Loesungen fuer die
  154. Aufgaben (8) bis (12)" ( https://debianforum.de/forum/viewtopic.php?p=1299654#p1299654 ).
  155. 25:beschreiben <- function(ausdruck, escape, standard) {
  156. 38:  anzahl_zeichen = str_extract_all(string = ausdruck,
  157. 39:                                   pattern = "[:print:]",
  158. 40:                                   simplify = TRUE) %>% length()
  159. 41:  zeichenvektor = str_extract_all(str = ausdruck,
  160. 42:                                  pattern = "[:print:]",
  161. 43:                                  simplify = TRUE)
  162. 45:  while (i <= anzahl_zeichen) {
  163. 46:    if ((escape == zeichenvektor[i]) & (standard == "literal")) {
  164. 47:      zeichenfolge <- paste0(zeichenfolge,
  165. 49:                             zeichenvektor[i + 1],
  166. 51:      )
  167. 53:    } else if ((escape == zeichenvektor[i]) & (standard == "meta")) {
  168. 54:      zeichenfolge <- paste0(zeichenfolge,
  169. 56:                             zeichenvektor[i + 1],
  170. 57:                             ". ")
  171. 59:    } else if ((escape != zeichenvektor[i]) & (standard == "literal")) {
  172. 60:      zeichenfolge <- paste0(zeichenfolge,
  173. 62:                             zeichenvektor[i],
  174. 63:                             ". ")
  175. 65:    } else if ((escape != zeichenvektor[i]) & (standard == "meta")) {
  176. 66:      zeichenfolge <- paste0(zeichenfolge,
  177. 68:                             zeichenvektor[i],
  178. 69:                             ". ")
  179. 71:    } else {
  180. 74:    }
  181. 76:  }
  182. 78:}
  183. 86:beschreiben(ausdruck = "A,BCD,E,FG,,H",
  184. 88:            standard = "literal")
  185. 92:beschreiben(ausdruck = "hello, world",
  186. 94:            standard = "meta")
  187. 97:beschreiben(ausdruck = "Haus",
  188. 99:            standard = "literal")
  189. 102:beschreiben(ausdruck = "Haaus",
  190. 104:            standard = "literal")
  191. 106:beschreiben(ausdruck = "Haaus",
  192. 108:            standard = "meta")
  193. Übereinstimmungen in Binärdatei RegExp-Kurs_02_Aufgabe_14.R
  194. $
  195. $ # Sterne
  196. $ ## --> Das Sternchen (*) hat eine Sonderbedeutung innerhalb von egrep --> muss (auch in Musterdatei) escapet werdem
  197. $ cat a8_sterne.txt # Inhalt der Musterdatei ausgeben
  198. \*
  199. $ egrep --line-number -f a8_sterne.txt RegExp-Kurs_02_Aufgabe_14.R
  200. 19:#' **Aufgabenstellung:** "[Aufgabe] 14) Auf die vorigen Aufgabe aufbauend: Schreibe ein Programm, das den escapeten Text
  201. wieder einliest und eine sprachliche Beschreibung davon ausgibt, aehnlich wie in (5). Pruefe damit deine Loesungen fuer die
  202. Aufgaben (8) bis (12)" ( https://debianforum.de/forum/viewtopic.php?p=1299654#p1299654 ).
  203. 24:#' **Funktion definieren:**
  204. Übereinstimmungen in Binärdatei RegExp-Kurs_02_Aufgabe_14.R
  205. $
  206. $ # Punkte
  207. $ ## --> Der Punkt (".") hat eine Sonderbedeutung innerhalb von egrep --> muss (auch in Musterdatei) escapet werdem
  208. $
  209. $ cat a8_punkte.txt # Inhalt der Musterdatei ausgeben
  210. \.
  211. $ egrep --line-number -f a8_punkte.txt RegExp-Kurs_02_Aufgabe_14.R
  212. 19:#' **Aufgabenstellung:** "[Aufgabe] 14) Auf die vorigen Aufgabe aufbauend: Schreibe ein Programm, das den escapeten Text
  213. wieder einliest und eine sprachliche Beschreibung davon ausgibt, aehnlich wie in (5). Pruefe damit deine Loesungen fuer die
  214. Aufgaben (8) bis (12)" ( https://debianforum.de/forum/viewtopic.php?p=1299654#p1299654 ).
  215. 50:                             ". "
  216. 57:                             ". ")
  217. 63:                             ". ")
  218. 69:                             ". ")
  219. Übereinstimmungen in Binärdatei RegExp-Kurs_02_Aufgabe_14.R
  220. $

Quellcode

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