如何用awk一个压缩文件(How to use awk for a compressed file)

2019-08-02 02:22发布

我怎样才能改变以下命令压缩文件?

awk 'FNR==NR { array[$1,$2]=$8; next } ($1,$2) in array { print $0 ";" array[$1,$2] }' input1.vcf input2.vcf

该命令与正常文件做工精细。 我需要改变命令压缩文件。

Answer 1:

你需要阅读这些压缩文件是这样的:

awk '{ ... }' <(gzip -dc input1.vcf.gz) <(gzip -dc input2.vcf.gz)

试试这个:

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


Answer 2:

zcat FILE | awk '{ ...}'

我不能够告诉它所有这些方法效果最好,用zcat至少更快类型;)



Answer 3:

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] }'

编辑:

写压缩输出只是追加

| bzip2 >output.vcf.bz2

要么

| gzip >output.vcf.gz

这将与打印结果到标准输出的任何程序中工作。

BTW:编辑这样大的命令行很快就会乏味。 你应该考虑写一个小的shell脚本来完成这项工作。 这样做,你不必记得整个事情,并可以很容易地重复该命令或在必要时修改它的额外好处。

为Linux shell编程一个很好的出发点是bash编程Inroduction由Mike G.



文章来源: How to use awk for a compressed file