텍스트를 여러 줄 패턴으로 바꾸기

텍스트를 여러 줄 패턴으로 바꾸기

파일에 개행 문자가 포함된 패턴이 있습니다.

client_encryption_options:
    enabled: false

... enabled으로 설정하고 싶지만 아래 항목이어야 합니다 .trueenabledclient_encryption_options

grep을 사용하면 여러 줄을 검색할 수 없습니다. 이 목표를 어떻게 달성할 수 있나요?

답변1

글쎄, grep이를 수정할 수도 없으므로 이 유틸리티는 처음부터 실행 가능하지 않습니다.

대신 GNU를 사용하세요 sed:

$ sed '/^client_encryption_options:/,+1s/enabled:.*/enabled: true/' file

그러면 문자열로 시작하는 줄을 찾아 client_encryption_options:해당 줄과 다음 줄에 대체를 적용합니다. 교체는 enabled:문자열과 같은 줄에서 그 뒤에 오는 모든 항목을 대체합니다 enabled: true.

교체는 두 행 모두에 적용되지만 enabled:.*첫 번째 행에서 패턴을 찾을 수 없으므로 변경되지 않은 상태로 유지됩니다. 두 번째 줄은 (다음 텍스트와 관계없이 enabled:) 무조건 변경됩니다.

답변2

그리고 sed:

sed '/client_encryption_options:/{n;s/false/true/;}'

n얻으라는 명령이다다음라인이 패턴 공간에 들어갑니다(현재 패턴 공간 내용을 인쇄하고 버린 후), s바꾸다.

관련 정보