awk NF文件名是如何工作的?

时间:2014-05-08 14:31:23

标签: bash awk

我有以下文件:

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上看到许多引用,据说我们可以使用此命令从文件中删除空行或制表符。但无法理解语法。

1 个答案:

答案 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表示:打印所有至少有一个字段的行。这自动暗示:打印所有非空行。