
Ist das möglich? Ich habe irgendwo gelesen, dass der folgende Befehl das tun würde:
sed -e [Befehl] [Datei]
aber es schien das gleiche zu bewirken wie nur
sed [Befehl] [Datei]
(die Änderungen wurden nicht gespeichert). Gibt es eine Möglichkeit, dies mit sed zu tun?
Antwort1
Ich glaube, Sie suchen -i
:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
Zum Beispiel:
$ cat foo.txt
hello world
$ sed -i 's/o/X/g' foo.txt
$ cat foo.txt
hellX wXrld
Wenn Sie ein Suffix angeben, wird eine Sicherungsdatei erstellt:
$ ls
foo.txt
$ sed -i.bak 's/o/X/g' foo.txt
$ ls
foo.txt foo.txt.bak
Die Eingabedatei wird geändert und eine Sicherungskopie mit den ursprünglichen Dateidaten erstellt.
Beachten Sie auch, dass dies für GNU ist sed
, es gibtleichte Unterschiedeim Format zwischen verschiedenen sed
Implementierungen.
Antwort2
Diese Lösung funktioniert für HPUX (UNIX):
1.
{ rm test1.sh && awk '{gsub("Error", "NO_Error", $0); print}' > test1.sh; } < test1.sh
:
2.
perl -pi -e 's/Error/NO_Error/g' test1.sh
3.
sed 's/Error/NO_Error/g' test1.sh | tee test1.sh
Antwort3
-e
Option ist für die Ausführung mehrerer sed
Befehle
sed -e 's/linux/unix/' -e 's/os/OS/' file.txt
betrachten file.txt
als
linux os
dann ist O/P
unix os
-i
Option speichert Änderungen dauerhaft …