Puedes probar este sed:
sed -i.bak 's/^\(VAR5=\).*/\1VALUE10/' file
Da:
VAR1=VALUE1
VAR2=VALUE2
VAR3=VALUE3
VAR4=VALUE4
VAR5=VALUE10
VAR6=VALUE6
A pesar de que la respuesta se ha agregado a la pregunta. Dediqué algo de tiempo a cómo funciona, me gustaría agregar algunos datos y mi versión de la respuesta,
sed -i 's,^\(THISISMYVARIABLE[ ]*=\).*,\1'THISISMYVALUE',g' config.cfg
Explicación:
- Como básico de
sed 's/find_this/replace_with/'
, estamos diciendo sed para buscar y reemplazar. También recuerde que hay muchos otros delimitadores que podemos usar en lugar de/
. Aquí,
se utiliza. - Aquí encontramos la línea que coincide con
^\(THISISMYVARIABLE[ ]*=\).*
. Esto significa que estamos agrupando la coincidenciaTHISISMYVARIABLE[ ]*=
. ([ ]*
para cubrir si hay espacios después de la clave) - En la sección de reemplazo
\1
es una referencia inversa. Estamos haciendo referencia al primer grupo en la expresión regular que usamos para la coincidencia.
Puedes decir:
sed '/^VAR5=/s/=.*/=VALUE10/' filename
Para realizar el cambio en el archivo in situ , usa el -i
opción:
sed -i '/^VAR5=/s/=.*/=VALUE10/' filename