SED: Ersetzen eines Strings

N

Nikolas

Mitglied
Thread Starter
Dabei seit
22.06.2007
Beiträge
78
Reaktionspunkte
2
Hallo

Ich würde gerne mit einem Skript einen Proxy in FireFox anschalten. Nach etwas Suche hat sich mein Problem daraufhin verkleinert, dass ich jetzt in einer Datei einen String durch einen anderen Austauschen will. (user_pref("network.proxy.type", 1); durch user_pref("network.proxy.type", 0);)

Nach etwas Suche bin ich auf sed und awk gestoßen, die eigentlich das recht schnell machen dürften.
Wenn ich jetzt aber sed 's/string1/string2/g dateiname aufrufe, bekomme ich die Textdatei im Terminal angezeigt und zwar mit den passenden Ersetzungen, nur wird die Datei nicht verändert. Per >> andereDatei kann ich auch die veränderte Datei schreiben, nur wenn ich dateiname >> dateiname schreibe, ist diese Datei nachher leider leer.

Ich würde jetzt nur sehr ungern die alte Datei löschen und die neue umbenennen, weil das wohl die hässlichste aller Lösunge ist.

Kann mir jemand sagen, wie ich die Änderungen direkt in die Datei bekomme?

Nikolas
 
RTFManPage!!!

Der Parameter -i [expression] löst genau diese Funktion aus, wobei expression eine beliebiger String in "" ist.

Ruft man also sed -i ".bak" 's/foo/bar/g' text.txt auf, wird in text.txt foo durch bar ersetzt und eine Datei text.txt.bak mit dem originalen Inhalt angelegt.

Der Aufruf sed -i "" 's/foo/bar/g' text.txt sorgt dafür, dass keine BackUpDatei angelegt wird. (die "" dürfen aber nicht weggelassen werden).
 
Zurück
Oben Unten