根据保留 header 行的列值拆分文本文件(基因组数据)

split text file (Genome data) based on column values keeping header line

我有一个大的基因组数据文件 (.txt),格式如下。我想根据染色体列 chr1, chr2..chrX,chrY 拆分它,依此类推,在所有拆分文件中保留 header 行。我如何使用 unix/linux 命令执行此操作?

基因组数据

 variantId  chromosome   begin  end
    1            1          33223  34343
    2            2          44543  46444
    3            2          55566  59999 
    4            3          33445  55666

结果

file.chr1.txt
variantId  chromosome   begin  end
1            1          33223  34343


file.chr2.txt
variantId  chromosome   begin  end
2            2          44543  46444
3            2          55566  59999 

file.chr3.txt
variantId  chromosome   begin  end
4            3          33445  55666

这是人类基因组的数据(即总是 46 条染色体)吗?如果是这样,怎么样:

for chr in $(seq 1 46)
do
    head -n1 data.txt >chr$chr.txt
done
awk 'NR != 1 { print [=10=] >>("chr"".txt") }' data.txt

(这是第二次编辑,基于@Sasha 上面的评论。)

请注意,("chr"".txt") 周围的括号在 GNU awk 上显然不需要,但它们在我的 OS X 版本的 awk 上。