圧縮ファイルに対して次のコマンドを変更するにはどうすればよいですか?圧縮ファイルにawkを使用する方法
awk 'FNR==NR { array[$1,$2]=$8; next } ($1,$2) in array { print $0 ";" array[$1,$2] }' input1.vcf input2.vcf
コマンドは正常なファイルで正常に動作します。圧縮ファイルのコマンドを変更する必要があります。
圧縮ファイルに対して次のコマンドを変更するにはどうすればよいですか?圧縮ファイルにawkを使用する方法
awk 'FNR==NR { array[$1,$2]=$8; next } ($1,$2) in array { print $0 ";" array[$1,$2] }' input1.vcf input2.vcf
コマンドは正常なファイルで正常に動作します。圧縮ファイルのコマンドを変更する必要があります。
によってBash Programming Inroductionです:
awk 'FNR==NR { sub(/AA=\.;/,""); array[$1,$2]=$8; next } ($1,$2) in array { print $0 ";" array[$1,$2] }' <(gzip -dc input1.vcf.gz) <(gzip -dc input2.vcf.gz) | gzip > output.vcf.gz
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] }'
または
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:
だけ
| bzip2 >output.vcf.bz2
または
| gzip >output.vcf.gz
を追加し、圧縮出力を書き込むには
これは、結果を標準出力に出力するプログラムで動作します。
ところで、このような大きなコマンドラインを編集するのは非常に面倒です。あなたは仕事をするために小さなシェルスクリプトを書くことを検討すべきです。これには、全体を覚えておく必要がなく、必要に応じて簡単にコマンドを繰り返したり変更したりできるという利点があります。 Linuxシェルプログラミングのための
良い出発点は、あなたが彼らにこのような圧縮ファイルを読む必要がマイクG.
zcat FILE | awk '{ ...}'
:
awk '{ ... }' <(gzip -dc input1.vcf.gz) <(gzip -dc input2.vcf.gz)
はこれを試してみてください
これらの方法のどれがうまくいくかわかりませんが、zcatは少なくともより速く入力する;)
zcatの代わりに' gzcat'を使用しました。 – nevets1219
'zcat'は' gzip -dc'と同等です(いくつかのシステムでは 'gzcat'が可能です) – arekolek