Aufgabe 1: sed
sed steht für stream editor und ist ein Unix-Werkzeug, mit dem Text-Datenströme bearbeitet werden können. [1]
Gib die Befehle, die nach dem $-Zeichen stehen auf der Kommandozeile ein und beantworte die Fragen.
Achte genau auf Groß- und Kleinschreibung bei Befehlen und Eingaben. |
Beispiel:
$ echo Hallo
Ausgabe: Hallo
Schritt 1 (s)
$ sed 's/ast/blatt/'
-
Gebe ast ein, drücke ENTER und beobachte die Ausgabe.
-
Gebe gast ein, drücke ENTER und beobachte die Ausgabe.
-
Gebe ast1 ast2 ein, drücke ENTER und beobachte die Ausgabe.
-
Gebe Ast ein, drücke ENTER und beobachte die Ausgabe.
-
Drücke Strg+D, um die Eingabe zu beenden.
Frage: Was macht der Befehl?
Hinweis: Das s steht für substitute = ersetzen
Schritt 2 (g)
$ sed 's/ast/Blatt/g'
Gebe jeweils folgendes ein, drücke dann ENTER und beobachte die Ausgabe:
-
ast
-
Ast
-
ast1 ast2
-
ast1 ast2 ast3
Frage: Was macht der Befehl im Vergleich zu Schritt 1?
Hinweis: Das g steht für global, also alles
Schritt 3 (I)
$ sed 's/ast/Blatt/I'
Gebe jeweils folgendes ein, drücke dann ENTER und beobachte die Ausgabe:
-
ast
-
Ast
-
Ast1 Ast2
Frage: Was macht der Befehl im Vergleich zu Schritt 2?
Hinweis: Das I steht für case-insenstive, also Groß-/Kleinschreiung wird ignoriert.
Schritt 4
Aufgabe: Kombiniere die g- und I-Option und probiere es mit der Eingabe ast1 AST2 Ast3 aus.
Hinweis: sed 's/ast/blatt/gI'
Schritt 5 (Pipe)
Die Eingaben können auch von einem anderen Programm kommen.
$ echo "ast1 ast2 ast3" | sed 's/ast/blatt/g'
Schritt 6 (;, Maus)
Man kann auch mehrere Ersetzungen hineinander in einem Befehl ausführen.
$ echo "ast1 ast2 ast3" | sed 's/ast/blatt/g;s/1/EINS/;s/2/ZWEI/'
Hinweis: Text mit der Maus markieren und auf der Konsole mit der mittleren Maustaste einfügen.
Schritt 7 (&)
$ echo "Das ist toll." | sed 's/toll/nicht &/'
Frage: Was bewirkt das &?
Schritt 8 (cow)
Aufgabe: Leite den Befehl cowsay Hallo so durch sed, dass folgendes Bild entsteht (Augen durch XX ersetzt):
_______ < Hallo > ------- \ ^__^ \ (XX)\_______ (__)\ )\/\ ||----w | || ||
Aufgabe 2: Regex
Schritt 1 (.)
$ echo "abc" | sed 's/./ -A- /g'
$ echo "abc def agg" | sed 's/a./ -A- /g'
Frage: Für was steht der Punkt im Suchmuster?
Schritt 2 (*)
$ echo "<ab> <ccc> <cc> <c> <> <ghi>" | sed 's/<c*>/ -A- /g'
Frage: Für was steht der Stern im Suchmuster?
$ echo "<ab> <ccc> <cc> <c> <> <ghi>" | sed 's/<.*>/ -A- /g'
Frage: Was ist passiert?
Aufgabe 3: HTML-Datei
-
Besuche die Seite https://docs.python.org/3/library/intro.html
-
Lade sie herunter, z. B. mit wget https://docs.python.org/3/library/intro.html
-
Die Datei im Browser öffnen.
-
Verwende sed, um alle Vorkommen von Python durch <b>Python</b> zu ersetzen.
sed <OPTIONEN> EINGABEDATEI > AUSGABEDATEI
-
Aktualisiere die Datei im Browser.