我有两个文件input1.vcf.gz和input2.vcf.gz,输出将输出.vcf.gz
input1.vcf.gz
X 60060 2 572 G:1 C:0
X 60070 2 572 G:0.996503 T:0.0034965
input2.vcf.gz
X 60060 . G C . . ;AA=0.131148;AFE=0.154639;EUN=0;AFW=0.181818;MED=0.00446429;LAT=0.0165746;VT=SNP;AF=0.04
X 60070 . G T . . ;AA=0;AFE=0;EUN=0;AFW=0;MED=0;LAT=0;AF=0.0009;VT=SNP
output.vcf.gz
X 60060 . G C . . ;AA=0.131148;AFE=0.154639;EUN=0;AFW=0.181818;MED=0.00446429;LAT=0.0165746;VT=SNP;AF=0.04;ASNE=0
60070 . G T . . ;AA=0;AFE=0;EUN=0;AFW=0;MED=0;LAT=0;AF=0.0009;VT=SNP;ASNE=0.0034965
下面 根据coloumn匹配将ASNE = 0和ASNE = 0.0034965附加到第二个文件
所有文件都是.gz格式
答案 0 :(得分:1)
以下是我认为你要做的事情,使用第一列和第二列作为键:
awk 'FNR==NR { split($NF,a,":"); b[$1,$2]=a[2]; next } ($1,$2) in b { print $0 ";ASNE=" b[$1,$2] }' input1.vcf input2.vcf
结果:
X 60060 . G C . . ;AA=0.131148;AFE=0.154639;EUN=0;AFW=0.181818;MED=0.00446429;LAT=0.0165746;VT=SNP;AF=0.04;ASNE=0
X 60070 . G T . . ;AA=0;AFE=0;EUN=0;AFW=0;MED=0;LAT=0;AF=0.0009;VT=SNP;ASNE=0.0034965
因此,对于压缩文件,请尝试:
awk 'FNR==NR { split($NF,a,":"); b[$1,$2]=a[2]; next } ($1,$2) in b { print $0 ";ASNE=" b[$1,$2] }' <(gzip -dc input1.vcf.gz) <(gzip -dc input2.vcf.gz) | gzip > output.vcf.gz
请告诉我它是怎么回事。 HTH。