2009-09-13 5 views
0

je tnsnames.ora fichier comme letnsnames.ora parse utilisant grep pour extraire le nom d'hôte moins le domaine

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 est l'expression régulière dois-je utiliser pour extraire la valeur de l'hôte myhost clé.

Ouput should be 
myhost1 
myhost2 

Répondre

1

Comme imprime grep toute la ligne, vous pouvez le faire dans les étapes comme:

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

Pour le briser:

  1. grep "(host =" tnsnames.ora - - trouve toutes les lignes avec l'entrée "(host ="
  2. cut -f 2 -d '=' - trouve ce qui est dans la colonne numéro 2 si vous divisez par le caractère '='
  3. cut -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 à un point quelconque, voir le résultat intermédiaire, comme:

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

Souhaitez-vous donner:

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

de cette façon, il est facile de construire votre jeu de commandes pour faire ce genre de chose.

+0

Excellent merci à un miilion tu m'as montré comment casser un problème en morceaux et le résoudre – Edwards

Questions connexes