如何使用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;/"