Sie können diesen Sed ausprobieren:
sed -i.bak 's/^\(VAR5=\).*/\1VALUE10/' file
Es ergibt:
VAR1=VALUE1
VAR2=VALUE2
VAR3=VALUE3
VAR4=VALUE4
VAR5=VALUE10
VAR6=VALUE6
Obwohl die Antwort zur Frage hinzugefügt wurde. Ich habe einige Zeit damit verbracht, wie es funktioniert, ich möchte einige Fakten und meine Version der Antwort hinzufügen,
sed -i 's,^\(THISISMYVARIABLE[ ]*=\).*,\1'THISISMYVALUE',g' config.cfg
Erklärung:
- Als Basis von
sed 's/find_this/replace_with/'
, sagen wir sed zum Suchen und Ersetzen. Denken Sie auch daran, dass es mehrere andere Trennzeichen gibt, die wir anstelle von/
verwenden können . Hier,
verwendet wird. - Hier finden wir die Zeile, die
^\(THISISMYVARIABLE[ ]*=\).*
entspricht . Das bedeutet, dass wir die ÜbereinstimmungTHISISMYVARIABLE[ ]*=
gruppieren . ([ ]*
zu überdecken, wenn nach dem Schlüssel Leerzeichen stehen) - Ersetzen Sie Abschnitt
\1
ist ein Rückverweis. Wir verweisen auf die erste Gruppe in dem regulären Ausdruck, den wir für die Übereinstimmung verwendet haben.
Sie können sagen:
sed '/^VAR5=/s/=.*/=VALUE10/' filename
Um die Änderung an der Datei an Ort und Stelle vorzunehmen , verwenden Sie den -i
Möglichkeit:
sed -i '/^VAR5=/s/=.*/=VALUE10/' filename