如何使用 if 语句在满足条件时执行一条命令,在不满足条件时执行另一条命令

如何使用 if 语句在满足条件时执行一条命令,在不满足条件时执行另一条命令

我有一个包含定义的最小和最大 rho 值的样本列表,

cat my.table   
SAMPLE  min_rho max_rho
RR26400a    0.1 0.3
RR26400c    0.2 0.4
RR26401a    0.1 0.7
RR26401c    0.5 0.8
RR26402a    0.4 0.7

我想问一下我感兴趣的焦点样本是否在

my.table 列表(如果它与 my.table 中 SAMPLE 列中的样本匹配)使用表中的值定义一个 min_rho 和 max_rho 变量,如果我感兴趣的样本与 SAMPLE 列中的任何样本都不匹配,则指定 0.1 作为 min_rho 和1 作为最大 rho。

这是一个简单的例子,我感兴趣的样品是 RR26400a,它位于 my.table 列表中

sample = "RR26400a"
min_rho=$(awk -v s=${sample} 'BEGIN {FS=OFS="\t"} $1 == s {print $2}' {params.min_max_rho});
max_rho=$(awk -v s=${sample} 'BEGIN {FS=OFS="\t"} $1 == s {print $3}' {params.min_max_rho});

我如何调整以使用 if 语句运行它并考虑样本在 my.table 中和不在 my.table 中的两种情况(分配默认值 0.1 和 1)

答案1

听起来这可能就是您想要做的:

$ cat tst.awk
BEGIN {
    FS = OFS = "\t"
    min = 0.1
    max = 1
}
$1 == sample {
    min = $2
    max = $3
}
END {
    print sample, min, max
}

$ awk -v sample='RR26400a' -f tst.awk my.table
RR26400a        0.1     0.3

$ awk -v sample='xx12345y' -f tst.awk my.table
xx12345y        0.1     1

相关内容