需要捕获两个搜索条件之间的行数

时间:2016-10-06 21:52:34

标签: linux bash awk

我需要捕获每个DELETE语句之间的行数。

DELETE FROM database.table
WHERE
@1=A
@2=B
@3=C
@4=D
@5=D
DELETE FROM database.table
WHERE
@1=A
@2=B
@3=C
@4=D
@5=D
DELETE FROM database.table
WHERE
@1=A
@2=B
@3=C
@4=D
@5=D

所以我会得到" 5"

的返回状态

我尝试过以下方法:

awk '/DELETE/{exit}flag;/WHERE/{flag=1}' delete_statements | wc -l

但这只有在我删除文件中的第一行时才有效。

2 个答案:

答案 0 :(得分:1)

要跳过awk中的第一行,只需添加条件:

awk 'NR>1 && /DELETE/{exit}flag;/WHERE/{flag=1}'
     ~~~~

答案 1 :(得分:1)

试试这个:

awk '/WHERE/{next} !/DELETE/{flag++} NR>1 && /DELETE/{print flag;exit}' file

输出

5