DataGuardDatadgSpace 문자열을 일치시키고 꽃 괄호 내에서 hostgroups 문자열을 찾고 hostgroups와 일치하는 줄에서 SERVER-DATABASE 문자열을 SERVER-NODE1-DATABASE로 바꾸고 싶습니다. 문자열과 일치하는 servicegroups 줄에는 영향을 미치지 않아야합니다. 나머지 코드.
이 코드를 파일에서 편집하고 싶습니다. 아래 옵션을 시도했습니다
sed -e '/./{H;$!d;}' -e 'x;/DataGuardDatadgSpace/!d;' test.shee
| sed '/hostgroups/s/\S*$/REPLACED/g'
하지만 파일에서 작동하지 않습니다.
define service { use generic-pasv-svc name SERVER-DATABASE-ArchdgSpace service_description DataGuardArchdgSpace hostgroups SERVER-DATABASE, xDB servicegroups PASV, SERVER-stack, SERVER-DATABASE max_check_attempts 3 check_command check_dummy! 2! "Passive check is stale" contact_groups po check_freshness 1 freshness_threshold 180 register 1 } 서비스 정의 { generic-pasv-svc 이름 사용 SERVER-DATABASE-DatadgSpace service_description DataGuardDatadgSpace 사용 servicegroups PASV, SERVER-stack, SERVER-DATABASE max_check_attempts 3 check_command check_dummy! 2! "Passive check is stale" contact_groups po hostgroups SERVER-DATABASE, xDB check_freshness 1 freshness_threshold 180 register 1 } define service { use generic-pasv- process service_description ORA_DATABASE_HangDetect_DefunctBASE_HangDetect_Defunct ORA_HangDetect_DefunctProcess 서비스 그룹 SERVER-DATABASE servicegroups PASV check_command check_dummy! 3! "패시브 서비스 검사가 오래되었습니다. Ora HangDetect 스크립트가 실행 중인지 확인하십시오." freshness_threshold 600 contact_groups po max_check_attempts 2 normal_check_interval 5 retry_check_interval 1 register 1 }
호스트 그룹 값이 샘플 코드가 SERVER-DATABASE
아니라 있어야한다고 가정합니다 SERVER--DATABASE
. 그렇다면이 sed를 시도해 볼 수 있습니다.
sed '/{/{:a;N;/}/!ba;/DataGuardDatadgSpace/s/\(.*hostgroups[[:space:]]*\)SERVER-DATABASE/\1SERVER-NODE1-DATABASE/;}' file
{
와 사이의 모든 선 }
은 패턴 공간에서 병합됩니다. 경우 DataGuardDatadgSpace
블록에서 발견된다, SERVER-DATABASE
의 값 hostgroups
으로 대체된다 SERVER- NODE1-DATABASE
.
-i
파일을 제자리에서 편집 하려면 플래그를 추가하십시오 .
sed -i '/{/{:a;N;/}/!ba;/DataGuardDatadgSpace/s/\(.*hostgroups[[:space:]]*\)SERVER-DATABASE/\1SERVER-NODE1-DATABASE/;}' file
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다