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 回答