구성 파일에서 블록을 제거하시겠습니까?

구성 파일에서 블록을 제거하시겠습니까?

구성 블록을 제거하는 간단하고 실용적인 방법을 아는 사람이 있습니까? 다음 형식의 파일이 있습니다.

lease {
  interface "eth0";
  ...
}
lease {
  interface "wlan3";
  fixed-address 192.168.0.108;
  option subnet-mask 255.255.255.0;
  ...
}

제거하려는 구성 블록입니다 interface "wlan3";.

사용자 정의 grep 함수를 작성하려고 시도했지만 금방 복잡해졌습니다.

이것은 일반적인 문제인 것 같습니다. 이 형식의 구성 파일을 처리하는 편리한 솔루션이 있는 사람이 있습니까?

답변1

그리고 awk:

awk -v RS='}' 'NF && ! /interface "wlan3";/{print $0"}"}'  infile

출력은 다음과 같습니다:

lease {
  interface "eth0";
  ...
}

관련 정보