
es posible? Leí en alguna parte que el siguiente comando lo haría:
sed -e [comando] [archivo]
pero parecía hacer lo mismo que simplemente
sed [comando] [archivo]
(no guardó los cambios). ¿Hay alguna manera de hacer esto usando sed?
Respuesta1
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, se creará un archivo de respaldo:
$ 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
, hayLigeras diferenciasen formato entre diferentes sed
implementaciones.
Respuesta2
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
Respuesta3
-e
La opción es para ejecutar múltiples sed
comandos.
sed -e 's/linux/unix/' -e 's/os/OS/' file.txt
considerar file.txt
como
linux os
entonces O/P es
unix os
-i
La opción guarda los cambios permanentemente...