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] }'
lub
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:
Aby napisać wyjście sprężonego prostu dołączyć
| bzip2 >output.vcf.bz2
lub
| gzip >output.vcf.gz
To będzie działać z każdym programem, który drukuje wyniki na standardowe wyjście.
BTW: Edycja tak dużych wierszy poleceń bardzo szybko staje się nudna. Powinieneś rozważyć napisanie małego skryptu powłoki, aby wykonać zadanie. Ma to dodatkową zaletę, że nie musisz pamiętać całej rzeczy i możesz łatwo powtórzyć polecenie lub zmodyfikować je, jeśli to konieczne.
Dobrym punktem wyjścia do programowania powłoki systemu Linux jest Bash Programming Inroduction Mike G.
'zcat' jest odpowiednikiem' gzip -dc' (w niektórych systemach może to być 'gzcat') – arekolek