在 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 其他字段。
我必须计算 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 其他字段。