¿Sed escribe en el archivo o proporciona un resultado de muestra?

¿Sed escribe en el archivo o proporciona un resultado de muestra?

cuando se usa sedcon un archivo como este

sed 's/a/o' fruits

proporciona la salida necesaria al terminal pero no cambia el contenido del archivo. ¿Cómo cambio permanentemente el archivo con la sustitución anterior?

Respuesta1

Utilice el -iparámetro para cambiar permanentemente el archivo.

Respuesta2

En general, no deberías hacerlo. GNU coreutils y algunas otras versiones agregan una -iopción para la edición in situ, pero tiene diferentes implementaciones y no es portátil. Los archivos no son secuencias, por lo que sedse debe evitar editarlos . La -iopción sedtambién rompe cualquier enlace simbólico, ya que esencialmente lo elimina y recrea el archivo. Utilice edo expara una alternativa más sensata.

ex -s file << EOF
s/a/o/
w
EOF

Respuesta3

Desde la página de manual de sed:

-i[SUFFIX], --in-place[=SUFFIX]

          edit files in place (makes backup if extension supplied)

información relacionada