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

时间:2017-02-14 07:31:01

标签: awk

我只需要创建一个insert.sql文件,其中包含A文件中的“INSERT”语句。你能帮我学习如何使用AWK处理字符串块吗?

@ INPUT FILE

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);   

3 个答案:

答案 0 :(得分: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和空行正则表达式。

答案 1 :(得分:1)

您可以使用此脚本:

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

记录分隔符RS设置为2个换行符。

$0 ~ "^INSERT"打印以关键字INSERT

开头的记录

答案 2 :(得分:1)

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