2017-02-14 50 views
0

我只需要在A文件中創建一個包含'INSERT'語句的insert.sql文件。你能幫我學習如何用AWK處理字符串塊嗎?如何獲得在awk中啓動模式的字符串塊

@輸入文件

UPDATE TEST_TABLE SET CO1 = '11111', COL2 = '234234234' 
WHERE COL3 < SYSDATE; 

UPDATE TEST_TABLE SET CO1 = '11111', COL2 = '234234234' 
WHERE COL3 < SYSDATE; 

INSERT INTO TEST_TABLE(COL1,COL2,COL3) 
VALUES('ASKDFJ','ASKDJFL',SYSDATE); 

UPDATE TEST_TABLE SET CO1 = '11111', COL2 = '234234234' 
WHERE COL3 < SYSDATE; 

INSERT INTO TEST_TABLE(COL1,COL2,COL3) 
VALUES('ASKDFJ','ASKDJFL',SYSDATE-2); 

@ OUTPUT

INSERT INTO TEST_TABLE(COL1,COL2,COL3) 
VALUES('ASKDFJ','ASKDJFL',SYSDATE); 

INSERT INTO TEST_TABLE(COL1,COL2,COL3) 
VALUES('ASKDFJ','ASKDJFL',SYSDATE-2); 
+1

你想刪除'UPDATE'語句?什麼是*「字符串塊」*請? –

回答

3

打印內容是INSERT和一個空行之間記錄:

$ awk '/INSERT/,/^$/' file 
INSERT INTO TEST_TABLE(COL1,COL2,COL3) 
VALUES('ASKDFJ','ASKDJFL',SYSDATE); 

INSERT INTO TEST_TABLE(COL1,COL2,COL3) 
VALUES('ASKDFJ','ASKDJFL',SYSDATE-2); 

選擇INSERT和空行正則表達式根據自己的喜好。

+0

'^ 1'不錯的一個... –

+0

雖然很簡單但很有用! – Sigularity

1

你可以使用這個腳本:

awk -v RS='\n\n' '$0 ~ "^INSERT"' file 

記錄分隔符RS設置爲2個換行。

$0 ~ "^INSERT"打印以關鍵字開始INSERT

+0

可能更好地將RS設置爲空字符串。 –

+0

是的,最好將RS設置爲空字符串。非常感謝! – Sigularity

1
awk -v ORS="\n" -v RS= '/^INSERT/{print $0}' inputfile 
+0

太好了。有用。 – Sigularity

相關問題