在 UNIX 的文件中一起计算 NULL 和空格

Counting NULL and spaces together in a file in UNIX

我必须计算 UNIX 文件中必填字段中 NULL 值的数量,我使用的是以下命令

awk -F"|" '{NN++;next}
             {N++}
     END { print "Null: " N "   Not Null: " NN }' NULL_test.dat

以下是示例文件

cat NULL_test.dat
a|b|c|d
 |d|00|a
 || |x
s| ||a
0||0|0
1|2|3|4

上面代码的问题是它将 [0] 视为 NULL 而空格被视为具有值

Expected output was NULL : 2 NOT NULL: 4
Actual output is NULL : 3 NOT NULL: 3

它不认为 0 为空,它认为 0 为零。当你写一个像 {do_foo} 这样的条件和动作时,你是在明确地告诉 awk 你想在 </code> 既不是零也不是 null 也不是全空时执行 <code>do_foo

使用 =="" 专门测试空值,使用 ~/^[[:blank:]]*$/ 测试空值或全空。这可能是您想要的:

~/^[[:blank:]]*$/{N++;next} {NN++}

Repeat/loop 其他字段。