我有一个如下所示的文本,大小约为6gb。我想保持#CHROM行不变,但我想将#CHROM行下的所有行洗牌。有没有一种记忆有效的方法来做到这一点?

##contig=<ID=chrX,length=155270560,assembly=hg19>
##contig=<ID=chrY,length=59373566,assembly=hg19>
##contig=<ID=chrM,length=16571,assembly=hg19>
##reference=file:///dmf/
##source=SelectVariants
#CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO    FORMAT
chr1    14165   .       A       G       220.12  VQSRTrancheSNP99.90to10
chr1    14248   .       T       G       547.33  VQSRTrancheSNP99.90to10
chr1    14354   .       C       A       2942.62 VQSRTrancheSNP99.90to10
chr1    14374   .       A       G       17.90   VQSRTrancheSNP99.90to10

我想要的结果是这样的:
##contig=<ID=chrX,length=155270560,assembly=hg19>
##contig=<ID=chrY,length=59373566,assembly=hg19>
##contig=<ID=chrM,length=16571,assembly=hg19>
##reference=file:///dmf/
##source=SelectVariants
#CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO    FORMAT
chr1    14354   .       C       A       2942.62 VQSRTrancheSNP99.90to10
chr1    14248   .       T       G       547.33  VQSRTrancheSNP99.90to10
chr1    14374   .       A       G       17.90   VQSRTrancheSNP99.90to10
chr1    14165   .       A       G       220.12  VQSRTrancheSNP99.90to10

最佳答案

我将按您的标准分割文件,在第二个块上使用shuf,然后再次将它们分类。我想不出一个内存效率高的wat可以避免分裂。

10-05 20:04