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

おすすめ記事