Назад | Перейти на главную страницу

Как получить строки между двумя строками с помощью сценария оболочки?

Как получить строки между двумя строками с помощью сценария оболочки? Например, у меня есть файл с именем file_text.txt, как показано ниже.

MEDIUMINT
CREATE ( 
MAXVALUE 
MEDIUMBLOB
MEDIUMINT
MEDIUMTEXT
MIDDLEINT );
MINUTE_SECOND
MINUTE_SECOND
CREATE (
MINUTE_MICROSECOND
MINUTE_SECOND
MOD );
MODIFIES
MEDIUMINT
CREATE (
NATURAL
NOT
NO_WRITE_TO_BINLOG
NULL );
NUMERIC
ON
OPTIMIZE

Я хочу выделить все строки между CREATE и; из файла. Включая CREATE и строку.

Что-то такое:

sed '/^CREATE/,/);$/!d;s/^CREATE (//;s/);$//' file_text.txt

выведет:

MAXVALUE 
MEDIUMBLOB
MEDIUMINT
MEDIUMTEXT
MIDDLEINT 

MINUTE_MICROSECOND
MINUTE_SECOND
MOD 

NATURAL
NOT
NO_WRITE_TO_BINLOG
NULL 

Или, если вам нужно CREATE ( и ); просто сделать

sed '/^CREATE/,/);$/!d' file_text.txt

Он будет делать что-то подобное:

CREATE ( 
MAXVALUE 
MEDIUMBLOB
MEDIUMINT
MEDIUMTEXT
MIDDLEINT );
CREATE (
MINUTE_MICROSECOND
MINUTE_SECOND
MOD );
CREATE (
NATURAL
NOT
NO_WRITE_TO_BINLOG
NULL );

Попробуй это

 echo "...youriput..." | tr -d "\n" | tr ';' '\n' | grep CREATE | sed "s/.*CREATE\(.*\)/CREATE\1;/"