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
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
Received on Tue 06 Jan 2004 - 17:57:11 CET