Ausgabe_nur_Musterdateien_RegExp_Kurs_03
von tegula- SNIPPET_TEXT:
-
- $ #!/bin/sh
- $
- $ #' ---
- $ #' title: "Lösungsversuch zum RegEXP-Kurs 03 - egrep"
- $ #' author: "tegula"
- $ #' date: " 29 4 2022"
- $ #' output: html_document
- $ #' ---
- $
- $
- $
- $ # ------------------------
- $ # ------------------------
- $
- $ #' **Ursprünglich Aufgaben:** https://debianforum.de/forum/viewtopic.php?t=184043
- $
- $ #' ** Hier bearbeite Variante:** "Arbeite vorerst mal nur mit den Musterdateien und gehe dafuer die Einheit nochmal durch.
- Mit Musterdateien ist es wie ich beschreibe. Wenn du es auf der Kommandozeile angibst, dann treten weitere Effekte auf, die
- dich nun verwirren" ( https://debianforum.de/forum/viewtopic.php?p=1300875#p1300875 )
- $ # ------------------------
- $ # ------------------------
- $
- $
- $ # AUfgabe 1 bis 6
- $ for musterdatei in a1.txt a2.txt a3.txt a4.txt a5.txt a6.txt; do
- >
- > printf "${musterdatei}: " # Aufgaben nummer bzw. Dateiname ausgeben
- > cat ${musterdatei} # Inhalt der Musterdatei ausgeben
- > printf "\n \n" # Zwei Zeilenumbrüche ausgeben (= mindestens eine Leerzeile)
- > egrep --line-number -f ${musterdatei} schwaebische-kunde.txt # Muster in schwaebische-kunde.txt suchen
- > printf "******\n\n" # Trenner zwischen einzelnen Aufgaben
- >> done
- a1.txt:
- a1.txt: Reiter
- 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,
- ******
- a2.txt:
- a2.txt: Viel Steine
- 8:Viel Steine gab's und wenig Brot,
- ******
- a3.txt:
- a3.txt: heil'gen
- 4:Zum heil'gen Land gezogen kam,
- ******
- a4.txt:
- a4.txt: Er sprach: "Sagt an,
- 53:Er sprach: "Sagt an, mein Ritter werth!
- ******
- a5.txt:
- a5.txt: eben\.
- 18:Und kostet's ihn das eigne Leben.
- ******
- a6.txt:
- a6.txt: \?
- 54:Wer hat Euch solche Streich' gelehrt?"
- ******
- $
- $ # ------------------------
- $ # ------------------------
- $
- $ # Aufgabe 7 (fgrep statt egrep)
- $ ## --> Unterschied zu Aufgabe 1-6 (egrep): Fragezeichen ("?") und (".") müssen nicht escapet werden, weil fgrep (im Gegens
- atz zu egrep) die, ihm übergebenen, Muster, immer als literale Wörter interpretiert.
- $
- $ for musterdatei in a1.txt a2.txt a3.txt a4.txt a5_fuer_fgrep.txt a6_fuer_fgrep.txt; do
- > printf "${musterdatei}: " # Aufgaben nummer bzw. Dateiname ausgeben
- > cat ${musterdatei} # Inhalt der Musterdatei ausgeben
- > printf "\n \n" # Zwei Zeilenumbrüche ausgeben (= mindestens eine Leerzeile)
- >
- > fgrep --line-number -f ${musterdatei} schwaebische-kunde.txt # Muster in schwaebische-kunde.txt suchen
- > printf "******\n\n" # Trenner zwischen einzelnen Aufgaben
- > done
- a1.txt:
- a1.txt: Reiter
- 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,
- ******
- a2.txt:
- a2.txt: Viel Steine
- 8:Viel Steine gab's und wenig Brot,
- ******
- a3.txt:
- a3.txt: heil'gen
- 4:Zum heil'gen Land gezogen kam,
- ******
- a4.txt:
- a4.txt: Er sprach: "Sagt an,
- 53:Er sprach: "Sagt an, mein Ritter werth!
- ******
- a5_fuer_fgrep.txt:
- a5_fuer_fgrep.txt: eben.
- 18:Und kostet's ihn das eigne Leben.
- ******
- a6_fuer_fgrep.txt:
- a6_fuer_fgrep.txt: ?
- 54:Wer hat Euch solche Streich' gelehrt?"
- ******
- $
- $ # ------------------------
- $ # ------------------------
- $
- $ # ------------------------
- $ # ------------------------
- $
- $ # Aufgabe 8
- $
- $ ## --> Die Mustersuche wird innerhalb der Datei RegExp-Kurs_02_Aufgabe_14.R ( https://debianforum.de/forum/pastebin/?mode=
- view&s=41639 ) durchgeführt.
- $
- $ # Klammern
- $
- $ ## --> Klammern haben eine Sonderbedeutung innerhalb von egrep --> müssen (auch in Musterdatei) escapet werdem
- $ cat a8_klammern.txt # Inhalt der Musterdatei ausgeben
- \(
- \)
- \[
- \]
- \{
- \}
- $ egrep --line-number -f a8_klammern.txt RegExp-Kurs_02_Aufgabe_14.R
- 2:#' title: " Aufgabe 14 (RegExp-Kurs 02: Metazeichen & Escaping)"
- 11:# R-Pakete (Bibliotheken) laden
- 19:#' **Aufgabenstellung:** "[Aufgabe] 14) Auf die vorigen Aufgabe aufbauend: Schreibe ein Programm, das den escapeten Text
- wieder einliest und eine sprachliche Beschreibung davon ausgibt, aehnlich wie in (5). Pruefe damit deine Loesungen fuer die
- Aufgaben (8) bis (12)" ( https://debianforum.de/forum/viewtopic.php?p=1299654#p1299654 ).
- 25:beschreiben <- function(ausdruck, escape, standard) {
- 38: anzahl_zeichen = str_extract_all(string = ausdruck,
- 39: pattern = "[:print:]",
- 40: simplify = TRUE) %>% length()
- 41: zeichenvektor = str_extract_all(str = ausdruck,
- 42: pattern = "[:print:]",
- 43: simplify = TRUE)
- 45: while (i <= anzahl_zeichen) {
- 46: if ((escape == zeichenvektor[i]) & (standard == "literal")) {
- 47: zeichenfolge <- paste0(zeichenfolge,
- 49: zeichenvektor[i + 1],
- 51: )
- 53: } else if ((escape == zeichenvektor[i]) & (standard == "meta")) {
- 54: zeichenfolge <- paste0(zeichenfolge,
- 56: zeichenvektor[i + 1],
- 57: ". ")
- 59: } else if ((escape != zeichenvektor[i]) & (standard == "literal")) {
- 60: zeichenfolge <- paste0(zeichenfolge,
- 62: zeichenvektor[i],
- 63: ". ")
- 65: } else if ((escape != zeichenvektor[i]) & (standard == "meta")) {
- 66: zeichenfolge <- paste0(zeichenfolge,
- 68: zeichenvektor[i],
- 69: ". ")
- 71: } else {
- 74: }
- 76: }
- 78:}
- 86:beschreiben(ausdruck = "A,BCD,E,FG,,H",
- 88: standard = "literal")
- 92:beschreiben(ausdruck = "hello, world",
- 94: standard = "meta")
- 97:beschreiben(ausdruck = "Haus",
- 99: standard = "literal")
- 102:beschreiben(ausdruck = "Haaus",
- 104: standard = "literal")
- 106:beschreiben(ausdruck = "Haaus",
- 108: standard = "meta")
- Übereinstimmungen in Binärdatei RegExp-Kurs_02_Aufgabe_14.R
- $
- $ # Sterne
- $ ## --> Das Sternchen (*) hat eine Sonderbedeutung innerhalb von egrep --> muss (auch in Musterdatei) escapet werdem
- $ cat a8_sterne.txt # Inhalt der Musterdatei ausgeben
- \*
- $ egrep --line-number -f a8_sterne.txt RegExp-Kurs_02_Aufgabe_14.R
- 19:#' **Aufgabenstellung:** "[Aufgabe] 14) Auf die vorigen Aufgabe aufbauend: Schreibe ein Programm, das den escapeten Text
- wieder einliest und eine sprachliche Beschreibung davon ausgibt, aehnlich wie in (5). Pruefe damit deine Loesungen fuer die
- Aufgaben (8) bis (12)" ( https://debianforum.de/forum/viewtopic.php?p=1299654#p1299654 ).
- 24:#' **Funktion definieren:**
- Übereinstimmungen in Binärdatei RegExp-Kurs_02_Aufgabe_14.R
- $
- $ # Punkte
- $ ## --> Der Punkt (".") hat eine Sonderbedeutung innerhalb von egrep --> muss (auch in Musterdatei) escapet werdem
- $
- $ cat a8_punkte.txt # Inhalt der Musterdatei ausgeben
- \.
- $ egrep --line-number -f a8_punkte.txt RegExp-Kurs_02_Aufgabe_14.R
- 19:#' **Aufgabenstellung:** "[Aufgabe] 14) Auf die vorigen Aufgabe aufbauend: Schreibe ein Programm, das den escapeten Text
- wieder einliest und eine sprachliche Beschreibung davon ausgibt, aehnlich wie in (5). Pruefe damit deine Loesungen fuer die
- Aufgaben (8) bis (12)" ( https://debianforum.de/forum/viewtopic.php?p=1299654#p1299654 ).
- 50: ". "
- 57: ". ")
- 63: ". ")
- 69: ". ")
- Übereinstimmungen in Binärdatei RegExp-Kurs_02_Aufgabe_14.R
- $
Quellcode
Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. PASTEBIN_DOWNLOAD_SNIPPET_EXPLAIN