我允许自己创建一个新问题,因为与我在 bash 脚本优化中的第一个问题相比,一些参数发生了巨大变化(优化我的脚本,它查找到一个大的压缩文件)
简而言之:我想查找并提取文件(1)(bam 文件)第一列的变量与文本文件(2)的第一列匹配的所有行。对于生物信息学家来说,它实际上是从两个文件中提取匹配的读取 id。文件1是二进制压缩的130GB文件文件2是10亿行的tsv文件
最近一个用户带来了一个非常优雅的单行器,它结合了文件的解压和使用 awk 的查找,它运行得非常好。随着文件的大小,它现在要查找 200 多个小时(多线程)。
- 这个“问题”在算法中有名称吗?
- 什么是应对这一挑战的好方法?(如果可能,使用简单的解决方案,例如 sed、awk、bash ..)
十分感谢
编辑:对不起代码,因为它在链接上,我虽然它是一个“doublon”。这是使用的一种衬里:
#!/bin/bash
samtools view -@ 2 /data/bismark2/aligned_on_nDNA/bamfile.bam | awk -v st="$1" 'BEGIN {OFS="\t"; while (getline < st) {st_array[$1]=$2}} {if ($1 in st_array) {print $0, st_array[$1], "wh_genome"}}'