【发布时间】:2020-03-30 22:01:13
【问题描述】:
我有一个模式是染色体坐标,例如:
chr1 1000 2000 chr1 11000 12000
对于单个模式,我使用以下查询:
grep 'chr1\s\+1000\s\+2000\s\+chr1\s\+11000\s\+12000' DB_file.txt
对于此类模式的完整列表,我有一个查询文件:
cat query.txt
chr1\s\+1000\s\+2000\s\+chr1\s\+10000\s\+11000
chr1\s\+1000\s\+2000\s\+chr1\s\+14000\s\+15000
chr1\s\+1000\s\+2000\s\+chr1\s\+175000\s\+176000
chr1\s\+1000\s\+2000\s\+chr1\s\+1639000\s\+1640000
我该怎么做? grep -f 花费的时间太长。谢谢
DB_file.txt 示例
chr1 1000 2000 chr1 10000 11000 3 281 0 0.459585414218248 0 0 0 1218 1 1.88650643678468 0 0 0 0.000000425582664277006 3.87833663319237 0.000000425597761316606 0.201115300038799 0.743522481235195 0.822936566866982
chr1 1000 2000 chr1 11000 12000 4 281 0 0.459585414218248 0 0 0 459 1 0.710924839477969 0 0 0 0.000000355375953311341 1.75327208538672 0.000000192399150742434 0.068194541602096 0.101318817290739 0.81707019750747
chr1 1000 2000 chr1 12000 13000 5 281 0 0.459585414218248 0 0 0 1415 1 2.19163104109222 0 0 0 0.000000310867653966458 3.44281554060217 0.000000377804900731428 0.128881860609444 0.263803805858084 0.81707019750747
chr1 1000 2000 chr1 13000 14000 1 281 0 0.459585414218248 0 0 0 437 1 0.676850010570529 0 0 0 0.000000285200375223444 1.49690344452761 0.000000164265976667856 0.335040184988013 0.776177861586765 0.837324774202159
chr1 1000 2000 chr1 14000 15000 1 281 0 0.459585414218248 0 0 0 530 1 0.820893605497437 0 0 0 0.000000271516726063383 1.60662404023105 0.000000176306406449545 0.322230259464951 0.799436461434159 0.850447555722604
chr1 1000 2000 chr1 16000 17000 1 281 0 0.459585414218248 0 0 0 490 1 0.758939371120272 0 0 0 0.000000253854147173018 1.41695624386548 0.000000155492795574155 0.343542270137564 0.75754917047966 0.828368055880824
chr1 1000 2000 chr1 18000 19000 2 281 0 0.459585414218248 0 0 0 130 1 0.201351261725787 0 0 0 0.000000231422263301451 0.691389012939271 0.0000000758710869983566 0.119714987783608 0.152817308925748 0.81707019750747
编辑:DB_file.txt 很大,有 4636593 行,因为 grep 花费的时间太长。我怎样才能加快速度?谢谢
【问题讨论】:
-
那么,
grep -f query.txt DB_file.txt有效,对吧?我得到了chr1 1000 2000 chr1 10000 11000 3 281 0 0.459585414218248 0 0 0 1218 1 1.88650643678468 0 0 0 0.000000425582664277006 3.87833663319237 0.000000425597761316606 0.201115300038799 0.743522481235195 0.822936566866982和chr1 1000 2000 chr1 14000 15000 1 281 0 0.459585414218248 0 0 0 530 1 0.820893605497437 0 0 0 0.000000271516726063383 1.60662404023105 0.000000176306406449545 0.322230259464951 0.799436461434159 0.850447555722604 -
其实我的 DB_File 是一个非常大的文件(4636593 行)。当我使用 grep 时,它需要很长时间。有什么办法可以加快速度吗?