从F1.sql中提取行到F2.sql

时间:2016-08-22 20:35:23

标签: linux

我有一个文件(f1.sql),里面有100行。我必须从F1.sql中提取下面格式化的所有行,并将其发送到另一个文件,例如f2.sql

ALTER TABLESPACE TEMP ADD TEMPFILE '/dat/ora/dw/temp01.dbf'
     SIZE 65535M REUSE AUTOEXTEND ON NEXT 134217728  MAXSIZE 65535M;

关键词可以是第一行的'ALTER TABLESPACE' 和第二行的“下一步”。

1 个答案:

答案 0 :(得分:1)

这是一个sed解决方案:

sed -n '/ALTER TABLESPACE/{N;/\n.*NEXT/p}' F1.sql > F2.sql

它仅匹配连续的线对。

演示:

$  cat F1.sql 
BLAH

ALTER TABLESPACE TEMP ADD TEMPFILE '/dat/ora/dw/temp01.dbf'
     SIZE 65535M REUSE AUTOEXTEND ON NEXT 134217728  MAXSIZE 65535M;

ALTER TABLESPACE THIS
     ONE WILL NOT MATCH

THIS ONE NEITHER
     ON NEXT WHATEVER

$  sed -n '/ALTER TABLESPACE/{N;/\n.*NEXT/p}' F1.sql 
ALTER TABLESPACE TEMP ADD TEMPFILE '/dat/ora/dw/temp01.dbf'
     SIZE 65535M REUSE AUTOEXTEND ON NEXT 134217728  MAXSIZE 65535M;