Estoy tratando de usar sed para editar un archivo de configuración. Hay algunas líneas que me gustaría cambiar. Sé que bajo Linux sed -i
permite ediciones in situ, pero requiere que guarde en un archivo de copia de seguridad. Sin embargo, me gustaría evitar tener múltiples archivos de respaldo y hacer todos mis cambios en el lugar a la vez.
¿Hay alguna manera de hacerlo sed -i
o hay una mejor alternativa?
a
se convierten enb
, y luego todas las instancias deb
se convierten end
. Podrías hacer lo mismo con:sed -i -e 's/a\|b/d/g' file
convertir todas las instancias de cualquieraa
ob
end
.Otra alternativa es
ex
, el predecesor devi
. En realidad, es la herramienta POSIX de elección para la edición de archivos con script en el lugar; Es extraordinariamente más flexiblesed -i
y posiblemente incluso más portátil que Perl. (Si te quedas fuera del mundo de Windows, es indiscutiblemente más portátil que Perl).Hay una escasez relativa en este intercambio de comandos de ejemplo usando
ex
, al menos en comparación con la gran cantidad de comandos de ejemplo que usansed
,awk
y Perl. Sin embargo, yo mismo he profundizado en las especificaciones POSIXex
y he estado tocando el tambor desde entonces. He escrito muchas respuestas usandoex
tanto aquí como en el intercambio de pila vi / Vim:Otras lecturas:
fuente
Además de utilizar múltiples
-e
opciones, también puede separar los comandos sed en un solo script sed utilizando líneas nuevas o punto y coma.Este es el caso si ese script es un trazo en la línea de comando o un archivo de script.
p.ej
Los caracteres de espacio alrededor del
;
son opcionales. Los he usado aquí para asegurarme de que el punto y coma se destaca (en general, a excepción de las líneas nuevas que separan comandos, se ignora el espacio en blanco entre los comandos ... pero no olvide que el espacio en blanco dentro de los comandos puede ser y generalmente es significativo).o:
fuente