bei Verwendung sed
mit einer Datei wie dieser
sed 's/a/o' fruits
Es gibt die erforderliche Ausgabe an das Terminal aus, ändert aber den Inhalt der Datei nicht. Wie ändere ich die Datei mit der obigen Ersetzung dauerhaft?
Antwort1
Verwenden Sie den -i
Parameter, um die Datei dauerhaft zu ändern.
Antwort2
Im Allgemeinen sollten Sie das nicht tun. GNU Coreutils und einige andere Versionen fügen eine -i
Option für die Bearbeitung direkt vor Ort hinzu, diese hat jedoch unterschiedliche Implementierungen und ist nicht portierbar. Dateien sind keine Streams, daher sed
sollte die Bearbeitung mit vermieden werden. Die -i
Option to sed
unterbricht auch alle symbolischen Links, da sie diese im Wesentlichen löscht und die Datei neu erstellt. Verwenden Sie ed
oder ex
als vernünftigere Alternative.
ex -s file << EOF
s/a/o/
w
EOF
Antwort3
Aus der Manpage von sed:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)