Puoi provare questo sed:
sed -i.bak 's/^\(VAR5=\).*/\1VALUE10/' file
Dà:
VAR1=VALUE1
VAR2=VALUE2
VAR3=VALUE3
VAR4=VALUE4
VAR5=VALUE10
VAR6=VALUE6
Anche se la risposta è stata aggiunta alla domanda. Ho passato un po' di tempo su come funziona, vorrei aggiungere alcuni fatti e la mia versione della risposta,
sed -i 's,^\(THISISMYVARIABLE[ ]*=\).*,\1'THISISMYVALUE',g' config.cfg
Spiegazione:
- Come base di
sed 's/find_this/replace_with/'
, stiamo dicendo sed per cercare e sostituire. Ricorda inoltre che ci sono molti altri delimitatori che possiamo usare al posto di/
. Qui,
viene utilizzato. - Qui troviamo la riga che corrisponde a
^\(THISISMYVARIABLE[ ]*=\).*
. Ciò significa che stiamo raggruppando la corrispondenzaTHISISMYVARIABLE[ ]*=
. ([ ]*
da coprire se ci sono degli spazi dopo la chiave) - In sostituzione della sezione
\1
è un riferimento all'indietro. Stiamo facendo riferimento al primo gruppo nell'espressione regolare che abbiamo utilizzato per match.
Puoi dire:
sed '/^VAR5=/s/=.*/=VALUE10/' filename
Per apportare la modifica al file sul posto , usa il -i
opzione:
sed -i '/^VAR5=/s/=.*/=VALUE10/' filename