analizzare tnsnames.ora usando grep per estrarre il nome host meno il dominio
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
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:
- grep " (host = " tnsnames.ora - trova tutte le righe con la voce " (host = "
- cut -f 2 -d '=' - trova ciò che è nella colonna numero 2 se dividi per il carattere '='
- 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