我有一个压缩文件。我想在第一列将其拆分为多个文件。下面的命令可以做到,但它也会跳过评论。如何在输出中包含标题/注释#
?另外,我想将输出保存为“[第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
答案 0 :(得分:2)
对于第二个问题,您可以将扩展名连接到第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 }'