私はこの答えをオンラインで探していましたが、見つけられないようです。
次を含む構成ファイルがあります。
VAR1=VALUE1
VAR2=VALUE2
VAR3=VALUE3
VAR4=VALUE4
VAR5=VALUE5
VAR6=VALUE6
そして、VAR5の値をVALUE5からVALUE10に変更します。残念ながら、VALUE5の値がわからないため、検索できません。したがって、基本的には、VAR5の値を置き換える値に置き換えるために、sed(または何でも)を使用する必要があります。
この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
ファイルを変更するには、in-placeを使用し、-i
オプション:
sed -i '/^VAR5=/s/=.*/=VALUE10/' filename
sed '/\(^VAR5=\).*/ s//\1VALUE10/' YourFile
AIX/KSHの下で
$ cat sample.txt
VAR1=VALUE1
VAR2=VALUE2
VAR3=VALUE3
VAR4=VALUE4
VAR5=VALUE5
VAR6=VALUE6
$ sed '/\(^VAR5=\).*/ s//\1VALUE10/' sample.txt
VAR1=VALUE1
VAR2=VALUE2
VAR3=VALUE3
VAR4=VALUE4
VAR5=VALUE10
VAR6=VALUE6
ファイル内の置換用
cat <> YourFile | sed '/\(^VAR5=\).*/ s//\1VALUE10/'
$ cat <> sample.txt | sed '/\(^VAR5=\).*/ s//\1VALUE10/'
$ cat sample.txt
VAR1=VALUE1
VAR2=VALUE2
VAR3=VALUE3
VAR4=VALUE4
VAR5=VALUE10
VAR6=VALUE6
POSIX(sed
ではなくcat
部分)準拠(sed --posix
gnu sedで、非Linuxシステムでネイティブに伝統的なsed)
以下をお試しください
sed -r 's/^(VAR5 =)。*/\ 1REPLACEMENT /'
VAR5の値はREPLACEMENTに置き換えられます。