ini
これに似たファイルがあります
[test]
foo=bar
このini
ファイルをtest1.ini
たとえば、 を使用しfoo
ての値を変更するにはどうすればよいですか。foobarbaz
shell script
私は次のことを試しましたが、うまくいきません。ini ファイルに更新された変更が表示されません。どのように書きますか?
sed "/^foo=/s/=.*/=foobarbaz/" < test1.ini
他に提案はありますか
sed
同じオプションがいくつかの異なるセクションに表示される可能性があるため、個人的にはより複雑なコマンドを使用します。
sh$ sed -i.bak '/^\[test]/,/^\[/{s/^foo[[:space:]]*=.*/foo = foobarbaz/}' test1.ini
# ^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
# make a in the right perform the substitution
# *backup* section as you want
また、セーフティネットとして、次のことを追加します。
sh$ diff test1.ini{,.bak}
2c2
< foo = foobarbaz
---
> foo=bar
ファイルを更新するには-i
、sed のオプションを使用します。
sed -i "/^foo=/s/=.*/=foobarbaz/" test1.ini
からman sed
:
- i[SUFFIX] , --インプレース[=SUFFIX]
その場でファイルを編集します (SUFFIX が指定されている場合はバックアップを作成します)
だからあなたもできる
sed -i.bak "/^foo=/s/=.*/=foobarbaz/" test1.ini