我正在阅读UNIX编程环境,在4.4节中,关于awk,有以下示例代码:
awk '
FILENAME != prevfile { # new file
NR = 1 # reset line number
prevfile = FILENAME
}
NF > 0 {
if ($1 == lastword)
printf "double %s, file %s, line %d\n",$1,FILENAME,NR
for (i = 2; i <= NF; i++)
if ($i == $(i-1))
printf "double %s, file %s, line %d\n",$i,FILENAME,NR
if (NF > 0)
lastword = $NF
}' $*
为什么是NF&gt;在已经具有NF&gt;的块内测试0。 0作为模式?
答案 0 :(得分:2)
答案 1 :(得分:0)
NF&gt; 0用于检查此行中是否有任何字段,因为NF可能为0.
我举个例子:
awk '{print "hello";}' -
1
hello
hello
当我写“1”时,块被执行(打印“你好”),当我进入一个空行时我又被执行了(第二个“你好”)
如果我将代码更改为:
awk 'NF > 0 {print "hello";}' -
1
hello
当输入为空行时,它没有显示第二个“你好”,因为NF为0。