0

次のような tnsnames.ora ファイルがあります

DB_CONNECTION1=
   (description=
     (address=
         (protocol=tcp)
         (host=myhost1.mydomain.com)
         (port=1234)
      )
      (connect_data=
         (sid=ABCD)
         (sdu=4321)
  )
DB_CONNECTION2=
   (description=
     (address=
         (protocol=tcp)
         (host=myhost2.mydomain.com)
         (port=1234)
      )
      (connect_data=
         (sid=ABCD)
         (sdu=4321)
  )

キー ホストから値 myhost を抽出するには、どの正規表現を使用する必要がありますか。

Ouput should be 
myhost1
myhost2
4

1 に答える 1

2

grep は行全体を出力するため、次のような手順で実行できます。

grep "(host=" tnsnames.ora | cut -f 2 -d '=' | cut -f 1 -d '.'

それを分解するには:

  1. grep "(host=" tnsnames.ora -- エントリ "(host=" を含むすべての行を検索します。
  2. cut -f 2 -d '=' -- '=' 文字で除算すると、列番号 2 の内容が検索されます
  3. カット -f 1 -d '.' -- '.' で割ると、列番号 1 の内容が検索されます。キャラクター

次のように、一連のコマンドを任意の時点まで実行して、中間結果を確認できます。

grep "(host=" tnsnames.ora | cut -f 2 -d '='

あなたに与えるでしょう:

myhost1.mydomain.com)
myhost2.mydomain.com)

そうすれば、この種のことを行うための一連のコマンドを簡単に作成できます。

于 2009-09-13T07:15:35.597 に答える