Pergunta

Eu tenho tnsnames.ora arquivo como

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)
  )

O que expressão regular que eu preciso para usar para extrair o valor myhost do host chave.

Ouput should be 
myhost1
myhost2
Foi útil?

Solução

Como impressões grep toda a linha, você poderia fazê-lo em etapas como:

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

Para decompô-lo:

  1. grep "(host =" tnsnames.ora - encontra todas as linhas com a entrada "(host ="
  2. corte -f 2 -d '=' - encontra o que está na coluna número 2 se você dividir pelo caractere '='
  3. corte -f 1 -d '' - encontra o que está na coluna número 1 se você dividir por o '. caráter

Você pode executar a cadeia de comandos para qualquer ponto, para ver o resultado intermédio, como:

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

iria dar-lhe:

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

Dessa forma, é fácil de construir seu conjunto de comandos para fazer este tipo de coisa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top