파일의 특정 부분의 값 바꾸기

파일의 특정 부분의 값 바꾸기

여러 섹션이 포함된 파일이 있는데 섹션의 모든 매개변수 값을 변경해야 합니다 [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}'

관련 정보