Respuestas:
Creo que estás buscando -i:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
Por ejemplo:
$ cat foo.txt
hello world
$ sed -i 's/o/X/g' foo.txt
$ cat foo.txt
hellX wXrld
Si proporciona un sufijo, creará un archivo de copia de seguridad:
$ ls
foo.txt
$ sed -i.bak 's/o/X/g' foo.txt
$ ls
foo.txt foo.txt.bak
El archivo de entrada se modifica y se crea una copia de seguridad que contiene los datos del archivo original.
También tenga en cuenta que esto es para GNU sed, hay ligeras diferencias en el formato entre diferentes sedimplementaciones.
sedno hace edición en el lugar. Crea un nuevo archivo y sobrescribe el antiguo, el inodo cambia.
{ rm file; cmd > file; } < filellevaría a la conclusión de que cmd lee y escribe en el mismo archivo, lo que no hace. Son dos archivos de distinción que tienen el mismo nombre. Pero no quiero comenzar una discusión aquí.
sed: 1: "foo.txt": invalid command code fcuando se ejecuta sed -i 's/o/X/g' foo.txt. Sin embargo, proporcionar una extensión, como sed -i .bak 's/o/X/g' foo.txtfunciona bien. ¿Alguna idea de cómo hacer que funcione sin crear archivos de copia de seguridad?
sed -i '' 's/o/X/g' foo.txt
Esta solución funciona para 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
-ela opción es para ejecutar múltiples sedcomandos
sed -e 's/linux/unix/' -e 's/os/OS/' file.txt
considerar file.txtcomo
linux os
entonces O / P es
unix os
-i la opción guarda los cambios de forma permanente ...
-ebandera significa expresión. Probablemente quieras la-ibandera que significain-placey te recomiendo que usessed -i.bak 's/../' filename