Antworten:
Ich denke, Sie suchen nach -i:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
Beispielsweise:
$ 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 gibt geringfügige Unterschiede im Format zwischen den verschiedenen sedImplementierungen.
sedführt keine direkte Bearbeitung durch. Es erstellt eine neue Datei und überschreibt die alte, der Inode ändert sich.
{ rm file; cmd > file; } < filezu der Schlussfolgerung führen, dass cmd in dieselbe Datei liest und schreibt, was es nicht tut. Es sind zwei verschiedene Dateien, die zufällig den gleichen Namen haben. Aber ich möchte hier keine Diskussion anfangen.
sed: 1: "foo.txt": invalid command code fbeim Laufen sed -i 's/o/X/g' foo.txt. Allerdings sed -i .bak 's/o/X/g' foo.txtfunktioniert das Bereitstellen einer Erweiterung, wie z. B.. Irgendwelche Ideen, wie man es zum Laufen bringt, ohne Sicherungsdateien zu erstellen?
sed -i '' 's/o/X/g' foo.txt
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
-eDiese Option dient zum Ausführen mehrerer sedBefehle
sed -e 's/linux/unix/' -e 's/os/OS/' file.txt
betrachten file.txtals
linux os
dann ist O / P
unix os
-i Option speichert Änderungen dauerhaft ...
-eFlagge steht für Ausdruck. Sie wollen wahrscheinlich die-iFlagge, was bedeutet,in-placeund ich empfehle Ihnen dringend, zu verwendensed -i.bak 's/../' filename