如果不满足条件,则awk将0添加到打印语句

时间:2018-09-04 15:57:08

标签: awk

在下面的awk中,我设置了一个loop来读取特定类型的每个文件。下面的示例是两种文件类型,但是如果没有什么可计数的(file1是示例),那么我将没有输出。我尝试根据任一条件打印输出,如果没有,则在0前面打印MAPD above QC Detected。如果有什么要计数的,那么awk会按预期执行,但我似乎无法正确调整它。这两个文件均为tab-delimited,而...代表被跳过的前三行。谢谢 :)。

awk

awk -F'\t' 'FNR == 3 {next}; $2 ~/MAPD>0.5/ {count++} END{print count " MAPD above QC Detected"}' file1 | awk '$1 == " MAPD above QC Detected" {print "0 MAPD above QC Detected"}'

文件1

....
....
.... 
chr1:1234   foo,bar
chr2:5678   foo,bar

文件2

....
....
....
chr1:1234   foo,MAPD>0.5
chr2:5678   foo,bar

所需的输出

文件1

0 MAPD above QC Detected

文件2

1 MAPD above QC Detected

1 个答案:

答案 0 :(得分:3)

print count更改为print count+0

作为未初始化的变量,count的初始值为零或零,并且当您不对其执行任何算术运算时(如输入内容不匹配时发生的情况),则awk不会知道要打印数字0,而是打印其字符串值NULL。