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.

Anmerkung Achte genau auf Groß- und Kleinschreibung bei Befehlen und Eingaben.

Beispiel:

$ echo Hallo

Ausgabe: Hallo

Schritt 1 (s)

$ sed 's/ast/blatt/'

  1. Gebe ast ein, drücke ENTER und beobachte die Ausgabe.

  2. Gebe gast ein, drücke ENTER und beobachte die Ausgabe.

  3. Gebe ast1 ast2 ein, drücke ENTER und beobachte die Ausgabe.

  4. Gebe Ast ein, drücke ENTER und beobachte die Ausgabe.

  5. 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:

  1. ast

  2. Ast

  3. ast1 ast2

  4. 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:

  1. ast

  2. Ast

  3. 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.

Referenzen