Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在UNIX中同时计算文件中的NULL和空格_Unix_Awk_Null_Whitespace - Fatal编程技术网

在UNIX中同时计算文件中的NULL和空格

在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

在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 ]为空,而空间被认为具有值

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?你说空和不空是什么意思?