next up previous contents
Nächste Seite: Programmübersetzung Aufwärts: Editor vi Vorherige Seite: Einfügen, Verändern und Löschen   Inhalt


Suchen und Ersetzen, reguläre Ausdrücke

Reguläre Ausdrücke

Häufig möchte man Unix-Kommandos wie z.B. Löschen oder Kopieren auf eine Reihe von Dateien anwenden oder in Texten, statt nach einer festen Zeichenkette, mit einem Muster suchen, in dem noch gewisse Freiheitsgrade vorhanden sind. Für beide Anforderungen stehen unter Unix sogenannte ,,reguläre Ausdrücke`` (regular expression) zur Verfügung, die weitgehend einheitlich von den verschiedenen Unix-Programmen interpretiert werden.

Ein regulärer Ausdruck ist dabei eine Folge von normalen Zeichen und Metazeichen. Ein normales Zeichen steht für das entsprechende ASCII-Zeichen selbst. Ein Metazeichen ist ein Zeichen, welches nicht das entsprechende Zeichen darstellt, sondern eine erweiterte Bedeutung besitzt. Das Fragezeichen ? z.B. steht in der Angabe von Dateinamen für ein beliebiges (auch nicht druckbares) Zeichen. Meint man in einem regulären Ausdruck das Zeichen selbst und nicht die Metabedeutung, so muss man das Metazeichen maskieren. Dies geschieht durch das Voranstellen des Fluchtzeichens $\backslash$. Der Editor vi stellt folgende Metazeichen zur Verfügung.

Suchmuster Bedeutung
beliebiges einzelnes Zeichen
beliebige Zeichenkette (auch die leere)
beliebige Wiederholung des vorangestellten Zeichens
eines der Zeichen aus ...
eines der Zeichen von a bis e
eines der Zeichen von a bis e oder h bis x
ein beliebiges Zeichen außer ...
Fluchtsymbol
Zeichenkette muster am Anfang der Zeile
Zeichenkette muster am Ende der Zeile
Zeile, die nur aus der Zeichenkette muster besteht
Zeichenkette muster am Anfang eines Wortes
Zeichenkette muster am Ende eines Wortes


Kommandos zum Suchen
/<reg-exp>
Suche von der aktuellen Cursorposition aus vorwärts nach dem Ausdruck <reg-exp>.
?<reg-exp>
Suche von der aktuellen Cursorposition aus vorwärts nach dem Ausdruck <reg-exp>.
n
Wiederhole das letzte Suchkommando.
N
Wiederhole das letzte Suchkommando in umgekehrter Richtung.
:set ic
Unterscheide nicht zwischen Groß- und Kleinschreibung.
:set noic
Unterscheide zwischen Groß- und Kleinschreibung.



Suchen und Ersetzen

Sollen mehrere gleiche Textteile gesucht und ersetzt werden, so geschieht dies am besten mit dem Substitute-Kommando des ex-Modus.
\fbox{{\tt :}[{\it bereich}]{\tt s/}{\it suchmuster}{\tt /}{\it
ersetzungsmuster}{\tt /}[{\tt gc}]}
Die Angabe bereich wählt dabei die Zeilen aus, die bearbeitet werden sollen:

bereich Bedeutung
weggelassen nur die aktuelle Zeile
der gesamte Text
Zeile a bis e
$ Zeile a bis zum Ende der Datei
von der aktuellen Zeile bis Zeile e
nur die Zeile e

Die Option (global) erlaubt mehr als eine Ersetzung pro Zeile. Durch die Option (confirmation) wird bei jeder Ersetzung nachgefragt.


next up previous contents
Nächste Seite: Programmübersetzung Aufwärts: Editor vi Vorherige Seite: Einfügen, Verändern und Löschen   Inhalt
Lars Tornow 2003-04-02