使用命令时:awk 'f&&!--f;{if(length($1)>8){f=1}}' awk.write
我可以在匹配的行之后打印行。
我知道的用法,flags
但不知道&&!--f
真正的用途是什么?
this line 1 no un1x
this lines 22 0
butbutbut this 33 22 has unix
but not 1
THIS is not
butbutbut ffff
second line
让我们来看看f&&!--f
。在这里,无论条件f
和!--f
需要评估为True,才能有默认的动作(打印线)执行。&&
是合乎逻辑的AND
。
如果in的陈述式的awk
计算结果不是,则为true 0
。因此,如果f
不是,则第一个条件为true 0
。
!--f
手段减少f
通过1
直接(f--
也减少一个,但只有一点点过去了,看到这个文档获取详细信息)。并!
否定了前面陈述的真值。因此,如果f
为1
,则--f
变为0
,也称为False。这!
使这成为事实。如果f
不相等,则应该抓住这种情况1
。
在这个简单的示例中,并不是必须进行第二次测试,但要确保f
将其重置为0
。较短的版本是:
awk 'f&&!--f;length($1)>8{f=1}' awk.write
可能更容易理解:
awk 'f&&{print;f=0};length($1)>8{f=1}' awk.write
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句