Bash “c&&--c、 `与'awk'连用时`
在学习使用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'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
的默认行为的一部分?