Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 需要捕获两个搜索条件之间的行数_Linux_Bash_Awk - Fatal编程技术网

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

Linux 需要捕获两个搜索条件之间的行数,linux,bash,awk,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;/WHE

我需要捕获每个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

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

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

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

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

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

awk '/WHERE/{next} !/DELETE/{flag++} NR>1 && /DELETE/{print flag;exit}' file
输出 试试这个:

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