sed: cambia los valores de las propiedades de un entorno en un archivo .yml
Tengo un archivo .yml que configura las propiedades del entorno de una aplicación, como esta:
env1:
:prop1: "value1"
:prop2: "value2"
...
:propn: "valuen"
env2:
:prop1: "value1"
:prop2: "value2"
:prop3: "value3"
...
:propn: "valuen"
...
envn:
:prop1: "value1"
:prop2: "value2"
...
:propn: "valuen"
Me gustaría producir un script bash con la siguiente interfaz:
$ change_env.sh <environment> <property> <new value> <file.yml>
Ejemplo
$ change_env.sh env2 prop3 "this value was changed" file.yml
La salida será:
env1:
:prop1: "value1"
:prop2: "value2"
...
:propn: "valuen"
env2:
:prop1: "value1"
:prop2: "value2"
:prop3: "this value was changed"
...
:propn: "valuen"
...
envn:
:prop1: "value1"
:prop2: "value2"
...
:propn: "valuen"
Encontré esta publicación, sin embargo, no pude hacerlo funcionar para mi caso. @ ¿Reemplazar el valor de un elemento XML? ¿Expresión regular de Sed?
También probé esto: (falla porque altera todas las propiedades)
sed 's/\(:pro3:\).*/\1 "new value"/'
¡Gracias por adelantado! - Lourenco.