analyser tnsnames.ora en utilisant grep pour extraire le nom d’hôte moins le domaine

StackOverflow https://stackoverflow.com/questions/1417026

  •  06-07-2019
  •  | 
  •  

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
Était-ce utile?

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:

  1. grep "(hôte =" tnsnames.ora): recherche toutes les lignes comportant l'entrée "(hôte ="
  2. cut -f 2 -d '=' - recherche le contenu de la colonne 2 si vous divisez par le caractère '='
  3. 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
scroll top