我有一个包含定义的最小和最大 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