bzip2 -dc input1.vcf.bz2 input2.vcf.bz2 | awk 'FNR==NR { array[$1,$2]=$8; next } ($1,$2) in array { print $0 ";" array[$1,$2] }'
oder
gzip -dc input1.vcf.gz input2.vcf.gz | awk 'FNR==NR { array[$1,$2]=$8; next } ($1,$2) in array { print $0 ";" array[$1,$2] }'
EDIT:
komprimierte Ausgabe zu schreiben hängen Sie einfach
| bzip2 >output.vcf.bz2
oder
| gzip >output.vcf.gz
Dies funktioniert mit jedem Programm, das Ergebnisse als Standardausgabe ausgibt.
BTW: Bearbeiten solcher großen Befehlszeilen wird sehr schnell langweilig. Sie sollten überlegen, ein kleines Shell-Skript zu schreiben, um die Aufgabe zu erledigen. Dies hat den zusätzlichen Vorteil, dass Sie sich nicht an das Ganze erinnern müssen und den Befehl einfach wiederholen oder bei Bedarf ändern können.
Ein guter Ausgangspunkt für Linux-Shell-Programmierung ist die Bash Programming Inroduction von Mike G.
'zcat' ist äquivalent zu' gzip -dc' (auf manchen Systemen könnte es 'gzcat' sein) – arekolek