Unix / Linux - Reguläre Ausdrücke mit SED

Hallo zusammen, zukünftige Kommandozeilen-Zauberer! Heute tauchen wir in die magische Welt der regulären Ausdrücke (regex) und der mächtigen SED-Kommando in Unix/Linux ein. Setzt euch an die Riemen, denn wir machen uns auf zu einem aufregenden Abenteuer, das die Art und Weise, wie ihr Text manipuliert, verändern wird!

Unix / Linux - Regular Expressions

Aufruf von sed

Lassen wir mit den Grundlagen beginnen. SED, was für "Stream Editor" steht, ist ein leistungsstarkes Textverarbeitungstool. Um es zu verwenden, tippen wir einfach "sed" gefolgt von unseren Befehlen. Es ist, als würde man einen textmanipulierenden Genius herbeirufen!

sed 'Befehl' Dateiname

Zum Beispiel:

sed 's/hello/bonjour/' begruessungen.txt

Dieser Befehl ersetzt "hello" durch "bonjour" in der Datei begruessungen.txt. Einfach, oder?

Die allgemeine Syntax von sed

Die allgemeine Syntax für sed ist wie ein magischer Spruch:

sed OPTIONEN... [SKRIPT] [EINGABEDATEI...]

Macht euch keine Sorgen, wenn das initially abschreckend aussieht. Wir werden es Schritt für Schritt auseinandernehmen, wie ein spannendes Puzzle!

Alle Zeilen mit sed löschen

Wollt ihr den gesamten Text in einer Datei verschwinden lassen? Sed kann das! Hier ist, wie man es macht:

sed 'd' Dateiname

Das löscht alle Zeilen in der Datei. Es ist, als würde man einen Radiergummi auf eurem digitalen Notizbuch verwenden!

Adressen in sed

Adressen in sed sind wie GPS-Koordinaten für euren Text. Sie sagen sed, wo es seine Magie anwenden soll. Hier sind einige Beispiele:

sed '2d' Datei.txt  # Löscht die 2. Zeile
sed '/Muster/d' Datei.txt  # Löscht Zeilen, die 'Muster' enthalten

Adressbereiche in sed

Manchmal möchten wir unsere Magie auf einen Bereich von Zeilen anwenden. Hier ist, wie man das macht:

sed '2,5d' Datei.txt  # Löscht Zeilen 2 bis 5
sed '2,$d' Datei.txt  # Löscht von Zeile 2 bis zum Ende der Datei

Der Ersatz-Befehl

Der Ersatz-Befehl ist das daily Bread und Butter von sed. Es ist wie "suchen und ersetzen" auf Steroiden!

sed 's/alt/neu/' Datei.txt

Das ersetzt die erste occurrence von "alt" durch "neu" in jeder Zeile.

Ersatz-Flags

Flags sind wie Power-ups für eure Ersatz-Befehle. Hier ist eine Tabelle der häufigsten Flags:

Flag Beschreibung
g Ersetzt alle Vorkommen, nicht nur das erste
i Ignoriert Groß- und Kleinschreibung
p Druckt die geänderte Zeile
w Schreibt das Ergebnis in eine Datei

Beispiel:

sed 's/cat/hund/g' tiere.txt

Das ersetzt alle Vorkommen von "cat" durch "hund".

Verwendung eines alternativen String-Trenners

Manchmal enthält euer Text viele Schrägstriche. Keine Sorge! Wir können verschiedene Trenner verwenden:

sed 's#/usr/local/bin#/common/bin#' pfade.txt

Hier verwenden wir '#' als unseren Trenner anstelle von '/'.

Ersetzen durch leeren Raum

Wollt ihr Text verschwinden lassen, ohne eine Spur zu hinterlassen? Hier ist, wie man es macht:

sed 's/unerwünscht//g' Datei.txt

Das entfernt alle Vorkommen von "unerwünscht" aus der Datei.

Adressen und Ersatz

Wir können Adressen mit Ersatz kombinieren, um präzise Textoperationen durchzuführen:

sed '3,6s/foo/bar/g' Datei.txt

Das ersetzt alle "foo" durch "bar", aber nur in den Zeilen 3 bis 6.

Der Übereinstimmungs-Befehl

Der Übereinstimmungs-Befehl ist wie ein Spotlight, der die Zeilen beleuchtet, die uns interessieren:

sed -n '/Muster/p' Datei.txt

Das druckt nur die Zeilen, die "Muster" enthalten.

Verwendung regulärer Ausdrücke

Jetzt kommen wir zur echten Magie! Reguläre Ausdrücke sind wie Wildcards auf Steroiden. Hier ist ein einfaches Beispiel:

sed -n '/^The/p' geschichte.txt

Das druckt alle Zeilen, die mit "The" beginnen.

Passende Zeichen

Reguläre Ausdrücke haben spezielle Zeichen, die wie Shapeshifter funktionieren:

Zeichen Bedeutung
. Jedes einzelne Zeichen
* Null oder mehr des vorherigen Zeichens
^ Anfang der Zeile
$ Ende der Zeile

Beispiel:

sed -n '/c.t/p' tiere.txt

Das passt zu "cat", "cot", "cut" usw.

Klassenschlüsselwörter

Zeichensätze sind wie Mannschaften von Zeichen. Hier sind einige MVP-Spieler:

Klasse Passt zu
[:alpha:] Alphabete Zeichen
[:digit:] Numerische Zeichen
[:alnum:] Alphanumeric Zeichen

Beispiel:

sed -n '/[[:digit:]]/p' daten.txt

Das druckt Zeilen, die jede Zahl enthalten.

Ampersand-Referenz

Das Ampersand (&) ist wie ein magischer Spiegel, der das Gepaarte reflektiert:

sed 's/[0-9]/(&)/' zahlen.txt

Das setzt Klammern um jede Zahl.

Verwendung mehrerer sed-Befehle

Wollt ihr mehrere Zauber gleichzeitig wirken? Verwendet die -e-Option:

sed -e 's/foo/bar/g' -e 's/baz/qux/g' Datei.txt

Das führt zwei Ersatz-Operationen gleichzeitig aus!

Rückverweise

Rückverweise sind wie Zeitmaschinen, die es uns ermöglichen, Teile der Übereinstimmung wiederverwenden:

sed 's/\(.*\):\(\(.*\)/\2:\1/' namen.txt

Das tauscht den Text vor und nach einem Doppelpunkt aus.

Und das war's, meine lieben Schüler! Wir haben die Länder von sed und regulären Ausdrücken bereist. Denkt daran, Übung macht den Meister. Also auf in die Welt und manipuliert Text wie die Kommandozeilen-Zauberer, die ihr werden werdet! Frohes Coden!

Credits: Image by storyset