一つ与えたいサービス名、返されたポート番号を取得します。
私のtnsnames.oraファイルは次のとおりです。
DELUCA =
(DESCRIPTION =
(ADDRESS = (COMMUNITY = TCP.world)(PROTOCOL = TCP)(Host = database.example.com.au)(Port = 32001))
(CONNECT_DATA =
(SID = D10)
)
)
TOTAL =
(DESCRIPTION =
(ADDRESS = (COMMUNITY = TCP.world)(PROTOCOL = TCP)(Host = database.example.com.au)(Port = 32002))
(CONNECT_DATA =
(SID = D11)
)
)
FMAX =
(DESCRIPTION =
(ADDRESS = (COMMUNITY = TCP.world)(PROTOCOL = TCP)(Host = database.example.com.au)(Port = 32003))
(CONNECT_DATA =
(SID = D12)
)
)
ベストアンサー1
正式な説明を見たことがないので、tnsnames.ora
形式を推測しています。欲しいものを実行するスクリプトに対する私の試みは次のとおりです。
#!/bin/bash
HOST=$1
tr '()' '\n\n' < input |
awk 'BEGIN {host=""; port=""}
/[Hh][Oo][Ss][Tt]/ {host=$3}
/[Pp][Oo][Rr][Tt]/ {port=$3}
host && port {
if (host == "'$HOST'") {print host, port}
host=""; port=""
}
'
awk
これはGNUの最近のArch Linuxインストールです。