Получить определенную строку ниже строки grepped

У меня есть сложная проблема, с которой я столкнулся

У меня есть следующий текст в файле:

create table "ctronsys".activity_codes ( code_list_id varchar(8), code_id varchar(10), record_type varchar(1), active_status_ind varchar(1), security_level varchar(1), short_description varchar(10), long_description varchar(30), record_class varchar(1), owner_id varchar(4), modify_user_id varchar(3), modify_date date, create_user_id varchar(3), create_date date ) in datadbs extent size 16 next size 16 lock mode row; 

Моя цель – grep для строки ниже в текстовом файле:

 create table "ctronsys".activity_codes 

и используя приведенное выше, чтобы получить строку ниже:

 ) in datadbs extent size 16 next size 16 lock mode row; 

Обратите внимание, что количество строк для поиска ниже не зависит от табличных структур

У меня есть следующая команда, которая позволяет мне печатать столбец внутри строки выше строки grepped с помощью awk, однако это только печатает один столбец внутри этой строки, тогда как я хотел бы напечатать всю строку:

 cat table_structure | awk -v key="datadbs" '/^create/ {val=$3} $3 == key {print val;}' 

One Solution collect form web for “Получить определенную строку ниже строки grepped”

Использование awk :

 awk 'BEGIN { FS="\n[()]"; RS=";" } /^create table "ctronsys".activity_codes/ { print $NF }' file in datadbs extent size 16 next size 16 lock mode row 

Мы делим содержимое файла на ; – разделенные записи. Каждая запись делится на поля, основанные на ( или ) в начале строки.

При чтении файла первая запись будет полным содержимым данного файла.

Первое поле этой записи

 create table "ctronsys".activity_codes 

Второе поле

  code_list_id varchar(8), code_id varchar(10), record_type varchar(1), active_status_ind varchar(1), security_level varchar(1), short_description varchar(10), long_description varchar(30), record_class varchar(1), owner_id varchar(4), modify_user_id varchar(3), modify_date date, create_user_id varchar(3), create_date date 

И последнее поле

  in datadbs extent size 16 next size 16 lock mode row 
  • Эффективный фильтр для файлов .sql с помощью только «INSERT INTO»
  • Сравните два выходных файла sql с именами столбцов и распечатайте разницу в другой файл
  • Отличный способ SQL-запроса нескольких CSV-файлов?
  • Переменная Unix, не способная хранить вывод sql-запроса
  • проверить шаблоны, которых нет в sqlite
  • Добавление разрывов между каждыми двумя словами в bash
  • как разделить буферизацию на меньшие файлы csv
  • Выход прерывается при добавлении вывода sql-запроса в ksh
  • удаление всех вкладок в sqlplus
  • Можно ли использовать sed для генерации файла нагрузки для таблицы фактов поиска даты?
  • отображать переменную unix с помощью dbms_output.put_line
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.