スクリプトの要件を満たすには、データベースのバージョンを抽出する必要があります。
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
。