Frage

Ich habe tnsnames.ora Datei wie

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

Was für reguläre Ausdrücke tun i verwenden, um den Wert myhost aus dem Schlüssel-Host zu extrahieren.

Ouput should be 
myhost1
myhost2
War es hilfreich?

Lösung

Wie grep die ganze Zeile druckt, können Sie es in den Schritten tun könnte wie:

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

Um es zu brechen:

  1. grep "(host =" tnsnames.ora - findet alle Zeilen mit dem Eintrag "(host ="
  2. cut -f 2 -d '=' - findet, was in der Spalte Nummer 2 ist, wenn man von den '=' Zeichen teilt
  3. cut -f 1 -d '' - findet, was in der Spalte Nummer 1 ist, wenn Sie durch die dividieren ‚‘ Zeichen

Sie können die Kette von Befehlen an jeden Punkt auszuführen, um das Zwischenergebnis zu sehen, wie:

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

Würde geben Sie:

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

Auf diese Weise ist es einfach, Ihren Satz von Befehlen zu bauen diese Art der Sache zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top