Bash “c&&--c、 `与'awk'连用时`

Bash “c&&--c、 `与'awk'连用时`,bash,shell,awk,gawk,Bash,Shell,Awk,Gawk,在学习使用awk时,我发现了一个表达式awk'c&&--c/regex/{c=N}'作为一种选择和打印与regex匹配的行下面的Nth行的方法。我知道c最初等于0,因此不会打印第一个匹配项,但尽管已进行了高低搜索,我不知道如何解释剩余语法(在/regex/之外),也不知道它如何明确知道在打印前计数N行 有人能解释一下c&&--c是指以及它如何与函数的其余部分一起作为计数器工作?如果c!=0正如您正确猜测的那样 表达式的后半部分--如果--c计算为0,则c将计算为true;这发生在c==1之前。此

在学习使用awk时,我发现了一个表达式
awk'c&&--c/regex/{c=N}'
作为一种选择和打印与regex匹配的行下面的
N
th行的方法。我知道
c
最初等于
0
,因此不会打印第一个匹配项,但尽管已进行了高低搜索,我不知道如何解释剩余语法(在
/regex/
之外),也不知道它如何明确知道在打印前计数
N


有人能解释一下
c&&--c
是指以及它如何与函数的其余部分一起作为计数器工作?

如果
c!=0
正如您正确猜测的那样

表达式的后半部分
--如果
--c
计算为
0
,则c
将计算为
true
;这发生在
c==1
之前。此外,只要
c!=0,因此
c
可以用作行计数器


当正则表达式匹配时,我们设置
c==N
,这样在
N
行之后(每行将
c
递减1),
c==1
,并且
awk
将打印该行。

太棒了,这实际上帮助很大。这是否意味着表达式末尾有一个隐藏的
{print}
命令作为
awk
的默认行为的一部分?