替换文件中特定部分的值

替换文件中特定部分的值

我有一个包含多个部分的文件,我必须更改部分中所有参数的值[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}'

相关内容