【问题标题】:awk to add 0 to print statement if condition not met如果条件不满足,awk 将 0 添加到打印语句
【发布时间】:2019-02-09 17:06:24
【问题描述】:

在下面的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

【问题讨论】:

    标签: awk


    【解决方案1】:

    print count 更改为print count+0

    作为一个未初始化的变量,count 的初始值为零或空值,当您不对它执行任何算术运算时(当您的输入中没有任何匹配项时会发生这种情况),那么 awk 不认识您想要打印它的数值 0,而是打印它的字符串值 NULL。

    【讨论】:

    • 非常感谢您的帮助,一个很好的解释,我很感激他们:)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    相关资源
    最近更新 更多