この sed を試すことができます:
sed -i.bak 's/^\(VAR5=\).*/\1VALUE10/' file
以下が得られます:
VAR1=VALUE1
VAR2=VALUE2
VAR3=VALUE3
VAR4=VALUE4
VAR5=VALUE10
VAR6=VALUE6
質問に回答が追加されていますが。私はそれがどのように機能するかについて少し時間を費やしました.いくつかの事実と私のバージョンの答えを追加したいと思います.
sed -i 's,^\(THISISMYVARIABLE[ ]*=\).*,\1'THISISMYVALUE',g' config.cfg
説明:
sed 's/find_this/replace_with/'
の基本として 、検索して置換する sed と言っています。また、/
の代わりに使用できる区切り文字が他にも複数あることを覚えておいてください .こちら,
- ここで、
^\(THISISMYVARIABLE[ ]*=\).*
に一致する行を見つけます .これは、マッチTHISISMYVARIABLE[ ]*=
をグループ化していることを意味します . ([ ]*
キーの後にスペースがある場合にカバーするため) - 置換セクション
\1
内 後方参照です。一致に使用した正規表現の最初のグループを参照しています。
次のように言えます:
sed '/^VAR5=/s/=.*/=VALUE10/' filename
その場でファイルに変更を加えるには 、 -i
を使用します オプション:
sed -i '/^VAR5=/s/=.*/=VALUE10/' filename