我有一个包含多个部分的文件,我必须更改部分中所有参数的值[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。您的文件是 ini_file 文件格式,Ansible 可以很好地管理这种文件。
查看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}'