如何使用shell脚本获取两个string之间的行?

如何使用shell脚本获取两个string之间的行? 例如,我有一个名为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 

我想grep之间的CREATE和; 从文件中。 包括CREATE和;string。

类似的东西:

 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;/"