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 .
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 |
Suchen und Ersetzen
Sollen mehrere gleiche Textteile gesucht und ersetzt werden,
so geschieht dies am besten mit dem Substitute-Kommando des ex-Modus.
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.