Файл а.txt
:
snp chr pos effect noneffect eaf beta se pval pval pval
chr:1 1 101 A G 0.3 -0.04 0.03 0.1 0.44 0.936
chr:1 1 1000 B L 0.01 0.03 0.8 0.427 0.6804
Некоторые строки от а.txt
мог бы отсутствовать $6
значения (как вторая строка здесь). Файл b.txt
101 0.1
1000 0.2
Я ищу путь, как заменить $6
из a.txt
с $2
от b.txt
Я попробовал ниже команды, которая не решила проблему:
awk '$6 {print $3,$6} !$6 {print $3,$2}' b.txt a.txt
awk 'NR==FNR{a[$1];next}$3 in a{print}' b.txt a.txt
Как я могу решить его?
Если можно использовать количество полей NF
, чтобы определить, отсутствует ли $6
, Вы могли бы сделать
awk 'NR==FNR {a[$1]=$2; next} NF<11 {$6 = a[$3] OFS $6} {print}' b.txt a.txt
, Если Вы хотите украсить вывод, передать его по каналу до column -t
:
$ awk 'NR==FNR {a[$1]=$2; next} NF<11 {$6 = a[$3] OFS $6} {print}' b.txt a.txt | column -t
SNP CHR POS EFFECT_ALLELE NON_EFFECT_ALLELE EAF BETA SE PVALUE INFO HWE
chr:1:10177:AC:A 1 10177 A AC 0.376827 -0.0447626 0.0316126 0.156783 0.422784 0.936182
chr:1:10352:TA:T 1 10352 T TA 0.43176 0.00727013 0.0309617 0.814356 0.427932 0.680802