2017-12-14 32 views
0

Nagios 구성 파일에서 여러 줄을 삭제하려고했습니다. 그러나 나는 여러 번 실패했다. 이제 도움을 요청합니다.파일에서 여러 줄 삭제 (Nagios 구성)

의 Nagios 구성 파일 :

define host{ 
     use      linux-host 
     host_name    vm1 
     alias     vm1 
     address     1.2.3.4 } 

define host{ 
     use      linux-host 
     host_name    vm2 
     alias     vm2 
     address     1.2.3.4 
} 

define host{ 
     use      linux-host 
     host_name    vm3 
     alias     vm3 
     address     1.2.3.4 
} 

나는 나 전체 텍스트 블록을 삭제할 수 있습니다 일반적인 명령이 필요합니다 (호스트를 정의 {*.}). 예 : "vm2". vm1 및 vm3의 텍스트 블록은 삭제하면 안됩니다.

아이디어가 있으십니까?

미리 감사드립니다. Tzzaetaynzz

블록은 빈 라인으로 분리 빈 행이 블록 내에서이없는 경우

답변

1

: 나는 패턴으로 vm2을 사용

awk -v RS="" -v ORS="\n\n" '!/vm2/' file 

을, 당신은 당신의 요구를 구체화 할 수 있습니다. 예 : host_name +vm1 또는 무엇이든.

+0

와 파일의 백업을 만들기 위해, (레코드 분리 미확정) 전체 파일 -i 올바른 위치 변경을 참조하십시오. 감사! –

1

-0777.BAK는 확장 .BAK 그것은 나를 위해 작동

perl -0777 -i.BAK -pe 's/define host\{[^{]*vm2.*?\}//gs' config_file 
+0

빠른 답장을 보내 주셔서 감사합니다. –