最小および最大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