Mit sed einen Teil einer Zeile ändern?
Folgendes Problem... ich versuche nun eine ganze Weile mit sed per bash script in einer Textdatei einen Teil einer Zeile zu ändern. Ich denke mal der Befehl
sed '/baz/s/foo/bar/g'
sollte das machen was ich möchte, tut es auch aber nur in der Ausgabe also STDOUT.
Wenn ich am Ende >> outputfile hinzufüge gibt es eine Fehlermeldung.
sed: -e Ausdruck #1, Zeichen 55: Unbekannte Option für `s'
Wie bekomme ich die Änderung nun in die ursrpüngliche Datei integriert?
Ich bin zwischenzeitlich schon auf awk ausgewichen aber leider auch erfolglos.
Jetzt bin ich ratlos und google liefert leider keine passenden Beispiele. :)
3 Antworten
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer
Eine Ersetzung (Substitution), hat die Form:
sed s/from/to/modifier
Genaueres kannst Du via
man sed
herausfinden.
Wenn Du mit der Dokumentation nicht klar kommst:
https://linuxconfig.org/learning-linux-commands-sed
Oder andere Seiten, die es an Beispielen erklären.
Danke für den Link... wird direkt studiert.
Sed ist für mich irgendwie schwere Kost, single quotes, escaping etc. da kann man schon mal den Überblick verlieren :D
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer
Also du kannst mit sed nicht in die gleiche Datei schreiben, die du liest. Es muss also eine temporäre Ausgabedatei geben, die du dann mit mv umbenennen kannst. (ursprüngliche Datei überschreiben)
Die Umleitung von STDOUT in eine Datei müsste schon gehen. Mit den Sed-Parametern (-e print...) bin ich mir nie sicher ohne Manual. :-p
/ SED / KILLPROCESS