我有一个压缩文件。我想通过第一列将其拆分为多个文件。下面的命令可以做到这一点,但它也会跳过评论。如何在输出中包含标题/注释#
?另外,我想将输出保存为"[第 1 列中的值].vcf"。我该怎么做?
zcat 1000G.vcf.gz | awk '!/^#/{print>$1}'
样品1000G.vcf
# header 1
# header 2
# header 3
1 A B
1 C B
1 C D
2 A B
2 C D
2 C E
3 A B
3 B D
我希望 awk 命令创建 3 个 vcf 文件:
1.vcf
# header 1
# header 2
# header 3
1 A B
1 C B
1 C D
2.vcf
# header 1
# header 2
# header 3
2 A B
2 C D
2 C E
3.vcf
# header 1
# header 2
# header 3
3 A B
3 B D
对于第二个问题,您可以将扩展名连接到第 1 列值。
awk '!/^#/ { file = $1 ".vcf"; print > file } '
对于标题行,将它们追加到变量中。第一次写入文件时,将注释写入该文件。
awk '/^#/ { comments = comments ? comments "n" $0 : $0 ; next }
!files[$1] { file = $1 ".vcf"; print comments > file; files[$1] = 1 }
{ file = $1 ".vcf"; print > file }'