Einführung und Tutorial

Sed

Globales Ersetzen


Betrachten wir das Sed-Kommando:

s/Unix/Linux

Was passiert, wenn wir dieses Kommando auf folgende Zeile anwenden:

Unix ist ein Betriebssystem, welches bereits seit 1969 existiert.

Dies kann z.B. durch folgenden Aufruf in einer Shell realisiert werden:

echo "Unix ist ein Betriebssystem, welches bereits seit 1969 existiert." | sed "s/Unix/Linux"

Als Ausgbae erhalten wir, wie erwartet, eine Zeile in der Unix mit Linux ersetzt wurde:

Linux ist ein Betriebssystem, welches bereits seit 1969 existiert.

Eine Aussage, die ja im Prinzip nicht ganz falsch ist, wenn man bedenkt, dass Linux  ja auf Unix basiert.  Aber kommen wir zu unserem Sed-Befehl zurück. Was würde aber passieren, wenn in der gleichen Zeile zweimal das Wort Unix vorkäme, also z.B.

Unix ist ein Betriebssystem, welches bereits seit 1969 existiert und Unix wurde von

In diesem Fall wird nur das erste Vorkommen von Unix durch Linux ersetzt und wir erhalten die Zeile:

Linux ist ein Betriebssystem, welches bereits seit 1969 existiert und Unix wurde von

Will man alle Vorkommen eines Wortes (Suchstrings) in einer Zeile ersetzen, so muss man Sed durch Anhängen des Paramters g (global) dies kundtun, also:

echo "Unix ist ein Betriebssystem, welches bereits seit 1969 existiert." | sed "s/Unix/Linux/g"



© Copyright 2004 - 2008, Bodenseo, Linux-Kurse am Bodensee, Bernd Klein