Vous pouvez essayer ce sed :
sed -i.bak 's/^\(VAR5=\).*/\1VALUE10/' file
Cela donne :
VAR1=VALUE1
VAR2=VALUE2
VAR3=VALUE3
VAR4=VALUE4
VAR5=VALUE10
VAR6=VALUE6
Même si la réponse a été ajoutée à la question. J'ai passé du temps sur son fonctionnement, j'aimerais ajouter quelques faits et ma version de la réponse,
sed -i 's,^\(THISISMYVARIABLE[ ]*=\).*,\1'THISISMYVALUE',g' config.cfg
Explication :
- Comme base de
sed 's/find_this/replace_with/'
, nous disons sed pour rechercher et remplacer. Rappelez-vous également qu'il existe plusieurs autres délimiteurs que nous pouvons utiliser à la place de/
. Ici,
est utilisé. - Ici, nous trouvons la ligne qui correspond à
^\(THISISMYVARIABLE[ ]*=\).*
. Cela signifie que nous regroupons le matchTHISISMYVARIABLE[ ]*=
. ([ ]*
pour couvrir s'il y a des espaces après la clé) - Dans la section de remplacement
\1
est une référence arrière. Nous faisons référence au premier groupe dans l'expression régulière que nous avons utilisée pour la correspondance.
Vous pouvez dire :
sed '/^VAR5=/s/=.*/=VALUE10/' filename
A faire dans la modification du fichier sur place , utilisez le -i
choix :
sed -i '/^VAR5=/s/=.*/=VALUE10/' filename