awk/sed를 사용하여 구성 파일 변경하기

awk/sed를 사용하여 구성 파일 변경하기

두 개의 서로 다른 디렉터리에 거의 동일한 두 개의 구성 파일이 있습니다.

## file1.conf ##
tunnel:
    enable: true
    interval: 20
    public: false

loop:
    enable: false
    interval: 20
    public: false

link:
    enable: true
    interval: 20
    public: false

## file2.conf ##
tunnel:
    enable: true
    interval: 20
    public: false

loop:
    interval: 20
    enable: false
    public: false

link:
    enable: true
    interval: 20
    public: false

이제 난 바꾸고 싶어활성화됨: 거짓도착하다활성화됨: 사실하지만 오직반지두 파일의 섹션. 하나의 명령 세트만 사용하여 이 두 파일을 어떻게 처리할 수 있습니까?

답변1

이는 내부 편집 을 사용하여 수행할 수 있습니다 sed -i.

sed -i '/^loop:/,/^$/ { s/enable:.*$/enable: true/ }' file1.conf file2.conf

명령은 두 가지 주요 부분으로 나뉩니다.

/^loop:/,/^$/ { .... }

{...}이는 빈 줄로 시작하고 끝나는 내용 으로 내용을 제한한다는 의미입니다 .loop:

안에 우리가 있어요

s/enable:.*$/enable: true/

이는 enable:라인이 true로 설정되도록 보장합니다.

결과적으로 빈 줄로 시작하고 끝나는 모든 줄이 다음과 같이 다시 작성 file1.conf되도록 다시 작성합니다.file2.confloop:enableenable: true

답변2

전체 블록을 구문 분석할 필요가 없습니다.

sed -i '/loop/{:a;n;/enable/s/false/true/;Ta;}' file1.conf file2.conf

관련 정보