Как игнорировать изменения в строке с помощью AWK - PullRequest
0 голосов
/ 26 марта 2020

Я пишу сценарий оболочки, в котором мне нужно вытащить имена таблицы, в которую вставляются данные. Поэтому, если сценарий sql содержит инструкцию типа «Вставить в имя_таблицы », сценарий должен извлечь имя таблицы.

Это то, что я использую

awk '{IGNORECASE = 1} /INSERT INTO/ && !a[$3]++{print $3}' $check_in_script >> $TBL_LST awk '{IGNORECASE = 1} /UPDATE/ && !a[$2]++{print $2}' $check_in_script >> $TBL_LST

Это работает нормально, но бывают случаи, когда в сценариях есть разрыв строки между вставкой в ​​и именем таблицы, и мне также нужно добавить регистр для этого.

insert into 
table_name

Как мне убедиться, что даже при изменении строки оператор awk извлекает имя таблицы

Спасибо

1 Ответ

0 голосов
/ 26 марта 2020

Вы можете использовать sed для удаления новой строки во входном файле.

sed '/Insert/I{N;s/\n//g}'

Демо:

$echo 'insert into 
table_name'  
insert into 
table_name
$echo 'insert into 
table_name'  |  sed  '/Insert/I{N;s/\n//g}'
insert into table_name
$


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...