Поскольку вы используете Linux, и вам нужно получить все строки внутри первых обратных кавычек после DROP TABLE
, я бы предложил использовать grep
с регулярным выражением PCRE, например
grep -oP 'DROP TABLE.*?`\K[^`]+' baza.sql > 1.txt
См. PCRE regex demo .
Подробности
DROP TABLE
- некоторый буквальный текст .*?
- любой ноль или более символов, кроме символов разрыва строки, как можно меньше `
- обратная кавычка \K
- оператор сброса соответствия, отбрасывающий весь текст, сопоставленный на данный момент [^`]+
- один или несколько символов, кроме обратной кавычки
Если у вас есть совпадения один раз в строке, вы все равно можете go с sed
:
sed -nE 's/DROP TABLE.*`([^`]*)`.*/\1/p' baza.sql > 1.txt
Здесь -n
подавляет вывод строки по умолчанию, -E
включает POSIX ERE (где (...)
определяет группу захвата, а не \(...\)
), тогда флаг p
выводит только результат подстановки.