Můžete zkusit tento sed:
sed -i.bak 's/^\(VAR5=\).*/\1VALUE10/' file
To dává:
VAR1=VALUE1
VAR2=VALUE2
VAR3=VALUE3
VAR4=VALUE4
VAR5=VALUE10
VAR6=VALUE6
I když k otázce byla přidána odpověď. Strávil jsem nějaký čas tím, jak to funguje, rád bych přidal některá fakta a svou verzi odpovědi,
sed -i 's,^\(THISISMYVARIABLE[ ]*=\).*,\1'THISISMYVALUE',g' config.cfg
Vysvětlení:
- Jako základ
sed 's/find_this/replace_with/'
, říkáme sed hledat a nahradit. Nezapomeňte také, že existuje několik dalších oddělovačů, které můžeme použít místo/
. Zde,
se používá. - Zde najdeme řádek, který odpovídá
^\(THISISMYVARIABLE[ ]*=\).*
. To znamená, že seskupujeme shoduTHISISMYVARIABLE[ ]*=
. ([ ]*
zakrýt, pokud jsou za klávesou mezery) - V části nahradit
\1
je zpětná reference. Odkazujeme na první skupinu v regulárním výrazu, který jsme použili pro shodu.
Můžete říct:
sed '/^VAR5=/s/=.*/=VALUE10/' filename
Chcete-li provést změnu v souboru na místě , použijte -i
možnost:
sed -i '/^VAR5=/s/=.*/=VALUE10/' filename
chmod čerstvě připojený externí disk pro nastavení přístupu pro zápis
bc zkrátit číslo s pohyblivou řádovou čárkou