Файл а.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
Если вы можете использовать количество полей 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
Если вы можете использовать количество полей 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