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

Linux 从F1.sql提取行到F2.sql,linux,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; 关键字可以是第一行的“altertablespace” 第二行是“下一步”。这里有一个sed解决方案: sed

我有一个文件(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;
关键字可以是第一行的“altertablespace”
第二行是“下一步”。

这里有一个
sed
解决方案:

sed -n '/ALTER TABLESPACE/{N;/\n.*NEXT/p}' F1.sql > F2.sql
它只匹配连续的行对

演示:


这个重新格式化的样本正确吗?如果是这样,您是在问如何提取以ALTER TABLESPACE开头并在第二行包含NEXT的行“对”吗?目标行是否总是成对的,或者是否有多个尺寸行,或者是否可以将术语拆分为两行以上?或者完整的ALTERTABLESPACE命令在一行上?祝你好运,谢谢你。工作得很好。@Lincon太棒了!请考虑接受这个答案(左勾)。
$  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;