如何在awk中获得启动模式的字符串块

如何在awk中获得启动模式的字符串块,awk,Awk,我只需要创建一个insert.sql文件,其中包含文件中的“insert”语句。你能帮我学习如何用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_TAB

我只需要创建一个insert.sql文件,其中包含文件中的“insert”语句。你能帮我学习如何用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);   

您可以使用以下脚本:

awk -v RS='\n\n'  '$0 ~ "^INSERT"' file
记录分隔符
RS
设置为2个换行符


$0~“^INSERT”
打印以关键字
INSERT
开头的记录您可以使用以下脚本:

awk -v RS='\n\n'  '$0 ~ "^INSERT"' file
awk -v ORS="\n" -v RS= '/^INSERT/{print $0}' inputfile
记录分隔符
RS
设置为2个换行符


$0~“^INSERT”
打印以关键字
INSERT
开头的记录打印
INSERT
和空行之间的内容:

awk -v ORS="\n" -v RS= '/^INSERT/{print $0}' inputfile
$ 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);

根据您的喜好选择插入和空行regexp。

打印插入和空行之间的内容:

$ 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
和空行regexp。

要删除
UPDATE
语句吗?请问“字符串块”是什么?要删除
UPDATE
语句吗?请问“字符串块”是什么?最好将RS设置为空字符串。是的,最好将RS设置为空字符串。非常感谢你!可能最好将RS设置为空字符串。是的,最好将RS设置为空字符串。非常感谢你!非常简单,但是非常有用!非常简单,但是非常有用!