我有如下所示的文本,大小约为 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
最佳答案
我会按照您的标准拆分文件,在第二个 block 上使用 shuf
,然后再次将它们组合在一起。我想不出可以避免 split 的内存高效 wat。
关于linux - 您如何以内存有效的方式随机化行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53636598/