스크립트 요구 사항을 충족하려면 데이터베이스 버전을 추출해야 합니다.
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
awk
Solaris 또는 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
.