在UNIX中同时计算文件中的NULL和空格
在UNIX中,我必须计算文件中一个必填字段中的空值数量,我使用了以下命令在UNIX中同时计算文件中的NULL和空格,unix,awk,null,whitespace,Unix,Awk,Null,Whitespace,在UNIX中,我必须计算文件中一个必填字段中的空值数量,我使用了以下命令 awk -F"|" '$3{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 ]为空,而空间被认为具有值 Expe
awk -F"|" '$3{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 ]为空,而空间被认为具有值
Expected output was NULL : 2 NOT NULL: 4
Actual output is NULL : 3 NOT NULL: 3
不考虑<代码> 0 /代码>为null,它认为<代码> 0 <代码>为零。当您编写一个条件和操作,如
$3{do_foo}
时,您特别告诉awk,当$3
既不是零也不是空,也不是全部空白时,您要执行do_foo
使用$3==”
专门测试空值,使用$3~/^[:blank:]*$/
测试空值或所有空值。这可能是您想要的:
$3~/^[[:blank:]]*$/{N++;next} {NN++}
对其他字段重复/loop。是否只对第3列计算null而不是null?你说空和不空是什么意思?