Risposte:
Penso che tu stia cercando -i:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
Per esempio:
$ cat foo.txt
hello world
$ sed -i 's/o/X/g' foo.txt
$ cat foo.txt
hellX wXrld
Se si fornisce un suffisso, verrà creato un file di backup:
$ ls
foo.txt
$ sed -i.bak 's/o/X/g' foo.txt
$ ls
foo.txt foo.txt.bak
Il file di input viene modificato e viene creato un backup contenente i dati del file originale.
Si noti inoltre che questo è per GNU sed, ci sono lievi differenze di formato tra le diverse sedimplementazioni.
sednon esegue modifiche sul posto. Crea un nuovo file e sovrascrive quello vecchio, l'inode cambia.
{ rm file; cmd > file; } < fileporterebbero alla conclusione che cmd legge e scrive nello stesso file, cosa che non accade. Sono due file distinti che hanno lo stesso nome. Ma non voglio iniziare una discussione qui.
sed: 1: "foo.txt": invalid command code fquando corro sed -i 's/o/X/g' foo.txt. Tuttavia, fornendo un'estensione, come sed -i .bak 's/o/X/g' foo.txtfunziona benissimo. Qualche idea su come farlo funzionare senza creare file di backup?
sed -i '' 's/o/X/g' foo.txt
Queste soluzioni funzionano per 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
-eopzione è per l'esecuzione di più sedcomandi
sed -e 's/linux/unix/' -e 's/os/OS/' file.txt
considerare file.txtcome
linux os
allora O / P è
unix os
-i L'opzione salva le modifiche in modo permanente ...
-ebandiera sta per espressione. Probabilmente vuoi la-ibandiera, il che significain-placeche ti consiglio vivamente di usaresed -i.bak 's/../' filename