analyser tnsnames.ora en utilisant grep pour extraire le nom d’hôte moins le domaine
Question
J'ai un fichier tnsnames.ora comme
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)
)
Quelle expression régulière dois-je utiliser pour extraire la valeur myhost de l'hôte de clé.
Ouput should be
myhost1
myhost2
La solution
Comme grep affiche toute la ligne, vous pouvez le faire en procédant comme suit:
grep "(host=" tnsnames.ora | cut -f 2 -d '=' | cut -f 1 -d '.'
Pour le décomposer:
- grep "(hôte =" tnsnames.ora): recherche toutes les lignes comportant l'entrée "(hôte ="
- cut -f 2 -d '=' - recherche le contenu de la colonne 2 si vous divisez par le caractère '='
- couper -f 1 -d '.' - trouve ce qui est dans la colonne numéro 1 si vous divisez par le '.' caractère
Vous pouvez exécuter la chaîne de commandes à n’importe quel point pour afficher le résultat intermédiaire, par exemple:
grep "(host=" tnsnames.ora | cut -f 2 -d '='
vous donnerait:
myhost1.mydomain.com)
myhost2.mydomain.com)
De cette façon, il est facile de construire votre ensemble de commandes pour faire ce genre de choses.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow