文件а.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
我正在寻找一种方法来用from替换$6
ofa.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
我该如何解决?
答案1
如果你可以使用字段数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