Reguläre Ausdrücke

Sonderzeichen in Suchmustern:

 . Steht für ein beliebiges *einzelnes* Zeichen, mit Ausnahme des Zeilenendezeichens.
 * Steht für eine beliebige (auch leere) Menge des einzelnen Zeichens vor dem Sternchen.
Das vorangehende Zeichen kann auch ein regulärer Ausdruck sein. Beispielsweise steht .*
für eine beliebige Anzahl eines beliebigen Zeichens
 ^ Übereinstimmung, wenn der folgende Ausdruck am Zeilenanfang steht.
 $ Übereinstimmung, wenn der vorhergehende Ausdruck am Zeilenende steht.
 \\ Schaltet die Sonderbedeutung des nachfolgenden Zeichens ab.
 [ ] Steht für *ein* beliebiges Zeichen aus der eingeklammerten Gruppe. Mit dem Bindestrich
kann man einen Bereich aufeinanderfolgender Zeichen auswählen ([a-e]). Ein Zirkumflex
(~) wirkt als Umkehrung: [^a-z] erfasst alle Zeichen, die keine Kleinbuchstaben sind. Ein
Bindestrich oder eine schließende eckige Klammer am Listenanfang werden als Teil der
Liste angesehen, alle anderen Sonderzeichen verlieren in der Liste ihre Bedeutung.
 \\( \\) Speichert das Muster zwischen \( und \) in einem speziellen Puffer. In einer Zeile können
bis zu neun solcher Puffer belegt werden. In Substitutionen können sie über die
Zeichenfolgen \1 bis \9 wieder benutzt werden.
/ \{ \\} Steht für den Vorkommensbereich des unmittelbar vorhergehenden Zeichens. \{n\} bezieht
sich auf genau n Vorkommen, \{n,\} auf mindestens n Vorkommen und \{n,m\} auf eine
beliebige Anzahl von Vorkommen zwischen n und m. Dabei müssen n und m im Bereich
zwischen 0 und 256 liegen.
 \\< \\> Steht für ein Zeichen am Anfang (\<) oder am Ende (\>) eines Wortes.
 + Steht für ein oder mehrere Vorkommen des vorhergehenden regulären Ausdrucks = \{1,\}
 ? Steht für kein oder ein Vorkommen des vorhergehenden Ausdrucks. = \{0,1\}
 | Übereinstimmung, wenn entweder der vorhergehende oder der nachfolgende reguläre
Ausdruck übereinstimmen.
 ( ) Steht für die eingeschlossene Gruppe von regulären Ausdrücken.

Sonderzeichen in Ersatzmustern:

 \\ Hebt die spezielle Bedeutung des nächsten Zeichens auf.
 \\n Ruft das n-te Muster aus dem Puffer ab (siehe oben, unter \( \).) Dabei ist n eine Zahl
zwischen 1 und 9.
 & Verwendet das vorherige Suchmuster erneut als Teil eines Ersatzmusters.
 ~ Verwendet das vorherige Ersatzmuster erneut im momentanen Ersatzmuster.
 \\u Ändert das erste Zeichen des Ersatzmusters auf Großschreibung.
 \\U Ändert alle Zeichen des Ersatzmusters auf Großschreibung.
 \\l Ändert das erste Zeichen des Ersatzmusters auf Kleinschreibung.
 \\L Ändert alle Zeichen des Ersatzmusters auf Kleinschreibung.
 \\e Hebt das vorangegangene \u oder \l auf.
  \\E Hebt das vorangegangene \U oder \L auf.

Beispiele: Muster

 Haus Die Zeichenfolge „Haus“.
 ^Haus „Haus“ am Zeilenanfang.
 Haus$ „Haus“ am Zeilenende.
 ^Haus$ „Haus“ als einziges Wort in einer Zeile.
 [Hh]aus „Haus“ oder „haus“
 Ha[unl]s „Haus“, „Hals“ oder „Hans“
 [^HML]aus Weder „Haus“, noch „Maus“, noch „Laus“, dafür aber andere Zeichenfolgen, welche „aus“ enthalten.
 Ha.s Der dritte Buchstabe ist ein beliebiges Zeichen.
 ^…$ Jede Zeile mit genau drei Zeichen.
 ^\\. Jede Zeile, die mit einem Punkt beginnt.
^\\.[a-z][a-z] Jede Zeile, die mit einem Punkt und zwei Kleinbuchstaben beginnt.
 ^\\.[a-z]\\{2\} Wie oben, jedoch nur in grep und sed zulässig.
 ^[^.] Jede Zeile, die nicht mit einem Punkt beginnt.
 Fehler* „Fehle“(!), „Fehler“, „Fehlers“, etc.
 „Wort“ Ein Wort in Anführunszeichen.
 „*Wort“* Ein Wort mit beliebig vielen (auch keinen) Anführungszeichen.
 [A-Z][A-Z]* Ein oder mehrere Großbuchstaben.
 [A-Z]+ Wie oben, jedoch nur in egrep und awk zulässig.
 [A-Z].* Ein Großbuchstabe, gefolgt von keinem oder beliebig vielen Zeichen.
 [A-Z]* Kein, ein oder mehrere Großbuchstaben
 [a-zA-Z] Ein Buchstabe.
 [^0-9a-zA-Z] Symbole (weder Buchstaben noch Zahlen).
[0-9a-zA-Z] Jedes alphanumerische Zeichen.

Beispiele: Suchen und Ersetzen mit sed. Im Folgenden werden Leerzeichen durch _ und
Tabulatoren durch TAB gekennzeichnet.

 s/.*/( & )/ Wiederholt die ganze Zeile, fügt aber Klammern hinzu.
 s/.*/mv & &.old/ Formt eine Wortliste (ein Wort pro Zeile) zu mv-Befehlen um.
 /^$/d Löscht Leerzeilen.
 /^[_TAB]*$/d Löscht Leerzeilen und Zeilen, die nur aus Leerzeichen oder Tabulatoren
bestehen.
 / */ /g Wandelt ein oder mehrere Leerzeichen in ein Leerzeichen um.
\(.*\)\n sucht nach einem Ausdruck in Klammern, gefolgt von einem Zeilenumbruch