Как извлечь одну строку, за которой следует ряд строк

Я пытаюсь извлечь одну строку, содержащую domain: за ней следует диапазон строк от nameservers" ] Я знаю, как делать эти вещи отдельно, используя grep и awk соответственно, но не уверен, как это сделать сразу.

Входные данные:

 domain: stackexchange.com date: Mon Jul 3 00:43:49 2017 output_dir: /tmp/stackexchange.com.12653 INFO:root:crawl: exiting dom: 'stackexchange.com' took: 10s INFO:root:2017-07-03 00:44:06:370 slave.py: exiting args.url: 'stackexchange.com' took: 3s + comparing web systems "mail_server_ip": [], | "mail_server_ip": [] "nameservers": [ "ns-925.awsdns-51.net.", "ns-1029.awsdns-00.org.", "ns-cloud-d1.googledomains.com.", "ns-cloud-d2.googledomains.com.", ], "nameservers_domains": [ | "nameservers_domains": [], "m 

Желаемый результат:

  domain: stackexchange.com date: Mon Jul 3 00:43:49 2017 output_dir: "nameservers": [ "ns-925.awsdns-51.net.", "ns-1029.awsdns-00.org.", "ns-cloud-d1.googledomains.com.", "ns-cloud-d2.googledomains.com.", ], 

Команды для извлечения данных отдельно:

  grep "domain:" test_sample.txt awk '/nameservers"/,/]/' test_sample.txt 

  • Я не могу печатать пустые строки при чтении значений из текстового файла с помощью awk в сценарии bash
  • Сравните два файла с первым столбцом и удалите повторяющуюся строку из второго файла в сценарии оболочки
  • Почему awk не показывает правильную длину записи?
  • Преобразование GB в TB в скрипт
  • awk проверить и распечатать, когда это правда
  • Есть ли способ ограничить диапазон шаблона диапазона в awk?
  • Ошибки при поиске специальных символов в awk
  • разбиение файла на основе значений в определенном столбце
  • 2 Solutions collect form web for “Как извлечь одну строку, за которой следует ряд строк”

    подход awk

     awk '/^domain:/{print}/"nameservers":/,/]/' test_sample.txt 

    grep с параметром P ( PCRE ):

     grep -Poz 'domain: .+ output_dir:|\s*"nameservers": \[[^][]+\],\n' test_sample.txt 

    Выход:

     domain: stackexchange.com date: Mon Jul 3 00:43:49 2017 output_dir: "nameservers": [ "ns-925.awsdns-51.net.", "ns-1029.awsdns-00.org.", "ns-cloud-d1.googledomains.com.", "ns-cloud-d2.googledomains.com.", ], 

    Основной шаблон основан на группе чередования регулярных выражений <domain_line>|<nameservers_lines>

    Interesting Posts
    Linux и Unix - лучшая ОС в мире.