Re: sed und regex

From: Christian Weykopf <c.weykopf(at)meilenstein.de>
Date: Tue, 6 Jan 2004 19:41:14 +0100

Am 06.01.2004 um 17:52 schrieb Franz Urbanski:

> On Tue, Jan 06, 2004 at 04:27:28PM +0100, Robert Barten wrote:
>> On Tue, Jan 06, 2004 at 03:33:35PM +0100, Christian Weykopf wrote:
>>> In der Datei steht:
>>> setenv MST "/usr/local/mst/fred;/usr/local/mst/karl"
>>
>> Beispiel unten gilt nur, wenn tatsächlich diese Zeile, jedenfalls mit
>> karl am Ende, in der Datei steht. Sonst würde ich wie Franz erst auf
>> Vorkommen prüfen.
>>
>>> Nun soll ein weiterer Pfad hinzugefügt werden, z.B.
>>> /usr/local/mst/barb, aber nur wenn er noch nicht exisitert.
>>> Ich habs jetzt mit einem C-Programm gemacht.
>>
>> cat datei | \
>> sed -E 's/(setenv MST.*karl)"/\1;\/usr\/local\/mst\/barb\"/' > datei
>
> Vorsicht, das geht schief! Auf diesen "Trick" bin ich auch
> schon reingefallen.
>
> Denn die Umleitung mit '> datei' loescht diese, so dass cat nur
> noch EoF sieht.
>
> Also besser:
> sed 'expression' datei > datei.neu && mv datei.neu datei
>
> Ausserdem wuerde der Pfad auch dann angefuegt werden, wenn er schon
> da ist. D.h. man muesste den Ausdruck noch ein wenig aufbohren.
>
> sed -e '/setenv MST/s/\/usr\/local\/mst\/barb\;//;
> /setenv MST/s/\"/\"\/usr\/local\/mst\/barb/\;/' \
> > datei.neu && mv datei.neu datei

Danke, Klasse, ich verstehe es sogar und habe auch den Fehler gefunden
:-)
Das ich es auch hinbekomme, wenn barb am Ende steht nehme ich mir als
Hausaufgabe vor.

>
> Also erstmal loeschen und dann vorne einfuegen (beim ersten '"') und
> das nur in der Zeile, die 'setenv MST' enthaelt.
>
> -Franz
>
> To Unsubscribe: send mail to majordomo.FreeBSD.org
> with "unsubscribe de-bsd-questions" in the body of the message
>
>

-- 
Christian Weykopf
Meilenstein Mac OS Software
Neue Strasse 5
D-31582 Nienburg
Fax: +49 (0) 5021 91 24 45
<http://www.meilenstein.de/>
To Unsubscribe: send mail to majordomo.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 06 Jan 2004 - 19:43:11 CET

search this site