[linux-l] Wie kann ich mit sed aus einer Datei lesen und in sie schreiben?

Thomas Kaepernick mast_1 at gmx.net
Sa Apr 21 22:03:25 CEST 2012


Am Samstag, den 21.04.2012, 10:59 +0200 schrieb Achim Pabel:
> Hallo Thomas,
> 
> ich hoffe nachfolgender Vorschlag hilft Dir weiter:
> 
...
>    sed  's/classes_list/\.\/usecase\/usecaselisting/' $file  >  
> $file.new  &
>    wait $!
>    mv $file.new  $file    2>/dev/null
>    
...
Genau solches Konstrukt wollte ich umgehen. Da finde ich den Hinweis mit
"sed -i" besser. Das würde die o.g. Zeilen auf eine verkürzen und 2
Programme weniger aufrufen. Mit Jans Hinweisen würde es so aussehen:

sed -i 's+classes_list+\./usecase/usecaselisting+' "$file"

Da das erste Zeichen (außer es ist ein Leerzeichen) nach s als Trenner
zwischen dem alten und dem zu ersetzenden String interpretiert wird,
kann man sich das Backslashen der Schrägstriche sparen.

Übrigens, ich habe nochmal in dem Buch "awk & sed" von H. Herold
(Addison-Wesley) nachgesehen. Dort ist der Schalter -i nicht angegeben.
Gibt es unterschiedliche sed-Varianten? 

Gruß Thomas






Mehr Informationen über die Mailingliste linux-l