
複数のセクションを含むファイルがあり、セクションのすべてのパラメータ値を変更する必要があります[Test2]
。
入力する:
[Test_1]
abc=123
def=456
.
.
.
so on
[Test_2]
abc=123
def=456
.
.
.
so on
[Test_3]
abc=123
def=456
.
.
.
so on
予想出力:
[Test_1]
abc=123
def=456
.
.
.
so on
[Test_2]
abc=111
def=222
.
.
.
so on
[Test_3]
abc=123
def=456
.
.
.
so on
私はこれを試しました:
sed "/\[Test_2\]/{n;s/^\(abc=\).*/\1$val1/';}" input > output.new && mv output.new input
sed "/\[Test_2\]/{n;s/^\(def=\).*/\1$val2/';}" input > output.new && mv output.new input
どこで$val1=111
そして$val2=222
。
しかし、期待した結果は出ません。誰でも助けることができますか?
答え1
別の方法はAnsibleを使用することです。あなたのファイルはAnsibleが非常にうまく管理できるini_fileファイル形式です。
確認するhttp://docs.ansible.com/ansible/ini_file_module.html
あなたの例では、構文は非常に簡単です。
- ini_file: dest=/anotherconf
section=Test_2
option=abc
value=111
答え2
これは私にとって効果的です -
sed '/Test_2/ {n;s/^\(abc=\).*$/\1'"$val1"'/;x;n;s/^\(def=\).*$/\1'"$val2"'/;H;g}'