我有一个文件(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' 和第二行的“下一步”。
答案 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;