анализ tnsnames.ora с использованием grep для извлечения имени хоста за вычетом домена

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

  •  06-07-2019
  •  | 
  •  

Вопрос

У меня есть файл tnsnames.ora, например

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

Какое регулярное выражение мне нужно использовать для извлечения значения myhost из хоста ключа.

Ouput should be 
myhost1
myhost2
Это было полезно?

Решение

Поскольку grep печатает всю строку, вы можете сделать это следующим образом:

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

Чтобы сломать это:

<Ол>
  • grep " (host = " tnsnames.ora - находит все строки с записью " (host = "
  • cut -f 2 -d '=' - находит, что находится в столбце № 2, если вы разделите на символ '='
  • cut -f 1 -d '.' - находит то, что находится в столбце № 1, если вы разделите на «.» символ
  • <Ч>

    Вы можете выполнить цепочку команд в любой точке, чтобы увидеть промежуточный результат, например:

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

    дал бы вам:

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

    Таким образом, вы легко можете создать свой набор команд для таких вещей.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top