Linux 需要捕获两个搜索条件之间的行数
我需要捕获每个DELETE语句之间的行数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 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
输出