Извлечение строк из файла с помощью awk - PullRequest
2 голосов
/ 27 июня 2011

У меня есть файл дампа sql, из которого я хочу извлечь операторы Insert.Я пытаюсь сделать это, используя awk.

Операторы вставки занимают несколько строк.Они начинаются с INSERT и заканчиваются точкой с запятой.

Я пробовал использовать:

awk '/INSERT*;/' dump.sql

Но это не работает.Как правильно это сделать?(Мой гугл-фу не справился с этим)

Спасибо!

Ответы [ 3 ]

3 голосов
/ 27 июня 2011

Для сопоставления нескольких строк:

/^INSERT/, /.*;/ {print}  

Работает в идеоне здесь

1 голос
/ 27 июня 2011

Примерно так (или то, что предлагает @belisarius) работает:

awk '{ if ($1 ~ /^\s*INSERT/) print $0 ";" }' RS=";" dump.sql

Установка разделителя записей довольно проста и хорошо документирована:

http://www.gnu.org/software/gawk/manual/html_node/Multiple-Line.html

Мне кажется, я не могу найти ссылку на двойные совпадения, как в решении @ belisarius, но мне оно нравится больше.

0 голосов
/ 27 июня 2011

Я думаю, что вы просто пропустили "."как в awk '/INSERT.*;/' dump.sql

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