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

Exp*_*ing 5 bash awk

我有以下文件:

cat testing.txt
==============
line1 1
line2 2 2


line3 3 3

line4
Run Code Online (Sandbox Code Playgroud)

我能理解如何awk 'NF > 0' testing.txt工作.此命令仅处理每个记录中包含多个字段的字段数,因此将删除空行和制表符.

awk 'NF>0' testing.txt
line1 1
line2 2 2
line3 3 3
line4
Run Code Online (Sandbox Code Playgroud)

但是我无法理解它awk NF testing.txt是如何工作的.它正如上所述.

awk NF testing.txt
line1 1
line2 2 2
line3 3 3
line4
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我没有说明任何条件.它仍然工作正常,并从每个记录中删除空行和制表符.

我可以在Web中看到许多引用,据说我们可以使用此命令从文件中删除空行或制表符.然而无法理解语法.

fed*_*qui 8

NF代表N的红棕色Fields.所以只要NF大于0,那就awk解释了True.所以实际上这是在做:

if NF>0  --> True
if NF==0 --> False
Run Code Online (Sandbox Code Playgroud)

作为默认行为awk就是{print $0},这意味着它的作用:

if NF>0   --->  True   ---> {print $0}
if NF==0  --->  False  ---> nothing
Run Code Online (Sandbox Code Playgroud)

所以awk NF file意味着:打印所有至少有一个字段的行.这自动暗示:打印所有非空行.

  • 虽然我无法想象它实际会发生的情况,但它可能正在考虑`NF!= 0`而不是严格的`NF> 0`.负数字段很可能不是问题,但...... ;-) (2认同)