Schreibt sed in die Datei oder gibt es eine Beispielausgabe?

Schreibt sed in die Datei oder gibt es eine Beispielausgabe?

bei Verwendung sedmit 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 -iParameter, um die Datei dauerhaft zu ändern.

Antwort2

Im Allgemeinen sollten Sie das nicht tun. GNU Coreutils und einige andere Versionen fügen eine -iOption für die Bearbeitung direkt vor Ort hinzu, diese hat jedoch unterschiedliche Implementierungen und ist nicht portierbar. Dateien sind keine Streams, daher sedsollte die Bearbeitung mit vermieden werden. Die -iOption to sedunterbricht auch alle symbolischen Links, da sie diese im Wesentlichen löscht und die Datei neu erstellt. Verwenden Sie edoder exals 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)

verwandte Informationen