我有以下文件:
cat testing.txt
==============
line1 1
line2 2 2
line3 3 3
line4
我可以理解awk 'NF > 0' testing.txt
是如何工作的。此命令仅处理每条记录中包含多个字段的字段数,因此空行和制表符将被删除。
awk 'NF>0' testing.txt
line1 1
line2 2 2
line3 3 3
line4
但我无法理解awk NF testing.txt
是如何运作的。它正如上所述。
awk NF testing.txt
line1 1
line2 2 2
line3 3 3
line4
在这种情况下,我没有指定任何条件。它仍然正常工作,并删除每条记录中的空行和制表符。
我可以在Web上看到许多引用,据说我们可以使用此命令从文件中删除空行或制表符。但无法理解语法。
答案 0 :(得分:8)
NF
代表N
ÖF
ield。因此,只要NF
大于0,awk
就会解释True
。所以实际上这是在做:
if NF>0 --> True
if NF==0 --> False
由于awk
的默认行为是{print $0}
,这意味着它确实:
if NF>0 ---> True ---> {print $0}
if NF==0 ---> False ---> nothing
所以awk NF file
表示:打印所有至少有一个字段的行。这自动暗示:打印所有非空行。