Domanda

Ho un file tnsnames.ora come

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

Quale espressione regolare devo usare per estrarre il valore myhost dall'host di chiavi.

Ouput should be 
myhost1
myhost2
È stato utile?

Soluzione

Mentre grep stampa l'intera riga, puoi farlo in passaggi come:

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

Per scomporlo:

  1. grep " (host = " tnsnames.ora - trova tutte le righe con la voce " (host = "
  2. cut -f 2 -d '=' - trova ciò che è nella colonna numero 2 se dividi per il carattere '='
  3. cut -f 1 -d '.' - trova ciò che è nella colonna numero 1 se dividi per '.' carattere

Puoi eseguire la catena di comandi in qualsiasi punto, per vedere il risultato intermedio, come:

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

Ti darebbe:

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

In questo modo è facile costruire il tuo set di comandi per fare questo tipo di cose.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top