Esto es lo que el s
comando sed fue construido para:
shopt -s extglob
ORIG="foo(1,2)"
REP="if (a > 1) {
foo(1,2)
} else {
bar(1,2)
}"
REP="${REP//+(
)/\\n}"
sed "s/$ORIG/$REP/g" inputfile > outputfile
Tenga en cuenta que los REP="${REP//\+( )/\\n}"
líneas sólo son necesarios si se quiere definir la REP
en la forma formateada que hice en la línea dos . Puede ser más simple si acaba de usar \n
y \t
en REP
para comenzar.
Editar en respuesta a la pregunta del OP
Para cambiar el archivo original sin crear un nuevo archivo, el uso de sed --in-place
bandera, de este modo:
sed --in-place "s/$ORIG/$REP/g" inputfile
Por favor, tenga cuidado con el --in-place
bandera. Haga copias de seguridad antes de ejecutarlo porque todos los cambios serán permanentes.
lo que si quiero cambiarlo actualización in situ en mi archivo actual sin crear ningún archivo extra. – ravi
@ravi Ver mis ediciones. –