oratab에서 데이터베이스 버전을 추출하는 방법

oratab에서 데이터베이스 버전을 추출하는 방법

스크립트 요구 사항을 충족하려면 데이터베이스 버전을 추출해야 합니다.

oratab데이터베이스 세부정보 와 해당 버전을 가져와야 합니다 .

oratab의 내 항목이 다음과 같다고 가정합니다.

dbname1:/oracle/app/oracle/11.2.0.4/db_1:Y
dbname2:/oracle/app/oracle/9.2.0.3/db_1:Y

여기서는 특정 데이터베이스의 데이터베이스 버전(예: 11 또는 9)을 추출하면 됩니다. 이는 쉘 스크립트가 11 또는 9만 표시해야 함을 의미합니다.

답변1

해당 버전이 awk필드 구분 기호로 정규 표현식을 지원하는 경우 다음을 수행할 수 있습니다.

$ awk -F'[/.]' '{print $5}' oratab
11
9

또는 데이터베이스 이름도 인쇄하려면 다음을 수행하십시오.

$ awk -F'[:/.]' '{print $1,$6}' oratab 
dbname1 11
dbname2 9

awkSolaris 또는 AIX 버전이 필드 구분 기호로 정규식을 지원하는지 잘 모르겠습니다 . GNU는 awk그렇습니다. FreeBSD 버전에서도 마찬가지입니다. mawk똑같이 하십시오 original-awk.

이는 Solaris에서 작동해야 합니다 awk(모든 Solaris에서 작동해야 함 awk).

awk -F'/' '/^#/ {next}; /kmad/ {sub(/\..*/,"",$5);print $5}' /etc/oratab

comment 로 시작하는 줄을 건너뛴 #다음 (포함된 모든 줄에 대해 ) 첫 번째 줄부터 시작하여 필드 5의 모든 항목을 kmad삭제 한 다음 해당 필드를 인쇄합니다..

필드 구분 기호나 명령문의 정규 표현식을 awk이해하지 못하는 정말 이상한 문제가 있는 경우 다음을 시도해 보십시오.next

awk -F'/' '! /^#/ && /kmad/ {sub(/\..*/,"",$5);print $5}' /etc/oratab

둘 다 awk없다면 sub(), 그렇지 않은 것 awk입니다.도도 새. 묻어두고 진짜를 얻으세요 awk.

관련 정보