sed - s/ / /g und das öfters

Post Reply
Message
Author
LBS

sed - s/ / /g und das öfters

#1 Post by LBS »

Hallo,

habe folgendes problem,

in einem shell-skript (und es muß shell sein) muß ich in einer Datei zwei zeilen ändern.
Also hab ich mir gedacht ich nehm den sed und mache ein s/bla/blabla/g. Soweit funzt es auch. Allerdings möchte ich ja zwei verschiedene Zeilen ändern und zweimal substitue im sed geht anscheinend auch net. Ich könnte zwar ein temporäre datei erzeugen und danach darauf auch wieder einen sed aber das ist irgendwie unschön.

Hat jemand eine Idee wie man es besser lösen kann, ein blick in die man hat mir nicht wirklich weitergeholfen.

Danke

cu

Jochen

Re: sed - s/ / /g und das öfters

#2 Post by Jochen »

Och, ganz einfach:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">sed -e 's/<i>erstes muster</i>/<i>erster ersatz</i>/g' -e 's/<i>zweites muster</i>/<i>zweiter ersatz</i>/g' <i>inputfile</i> > <i>outputfile</i></font><hr></pre></blockquote>Das "-e 'command'" kann man einfach mehrfach angeben.

Jochen

andib
Posts: 277
Joined: 20. Jun 2000 14:18
Location: Dortmund

Re: sed - s/ / /g und das öfters

#3 Post by andib »

Dazu hab ich jetzt auch mal ne Frage: wenn ich innerhalb einer Datei etwas ändern möchte, ohne deren Dateinamen zu ändern, muss ich dann perl und Konsorten nehemn oder geht das irgendwie direkt mit sed?
Also etwas wie
perl -pi -e "s/foo/bar/g" dateiname
?

Gibt es vielleicht ne schnellere Lösung (von der Programmlaufzeit her) als diese?

CU
Andi

Jochen

Re: sed - s/ / /g und das öfters

#4 Post by Jochen »

@Andi:

Nein, mir ist zumindest keine andere Lösung dazu bekannt. sed(1) ist ein Stream-Editor, d.h. er liest aus stdin oder Datei und schreibt nach stdout. Man darf aber die Standard-Ausgabe <i><b>nicht</b></i> direkt auf die Eingabedatei umleiten, da diese dann vor Aufruf des Kommandos von der Shell zum Schreiben geöffnet wird und daher 0 Bytes gross gemacht wird...

Der perl-Aufruf ist die einzige mir bekkante Art, Dateien in-place skriptgesteuert zu ändern, ohne die Datei umzukopieren.

Jochen

Post Reply