2016-08-22 63 views
-1

我有一個文件(f1.sql),裏面有100行代碼。我要提取從F1.sql以下格式的所有行,並將其發送到另一個文件說f2.sql從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

這是格式化的樣品是否正確?如果是這樣,你是否問如何從ALTER TABLESPACE開始提取行「對」,並在第二行包含NEXT?目標線是否始終配對,或者是否有多個SIZE線,或者這些術語是否可以分成兩行以上? OR是1行上的完整ALTER TABLESPACE命令?祝你好運。 – shellter

回答

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; 
+0

謝謝列弗。完美工作。 – Lincon

+0

@林肯太棒了!請考慮接受答案(左邊的勾號)。 –