awk:利用一个文件中的值在另一个文件中搜索

时间:2021-07-21 22:07:09

标签: awk range

我有两个不同的文件,一个包含大约 200 万行以上的 chr、碱基对位点和甲基化调用。所以基本上这些都是基因组中的所有 CpG 位点。

chr1 163881 163881 100 2 0
chr1 163896 163896 100 2 0
chr1 163927 163927 100 2 0
chr1 163994 163994 100 2 0

然后我有另一个文件,其中包含基因稳定 ID、染色体以及基因的开始和结束。

GeneId              chr     start       end
ENSBTAG00000000010  chr21   34209956    34223394
ENSBTAG00000000141  chr11   67778940    67807964
ENSBTAG00000000246  chr29   8891472     9112311
ENSBTAG00000000265  chr22   37781491    38082210
ENSBTAG00000000309  chr13   70704649    71533711

我想在我的第二个文件中搜索落入基因范围内的站点。我有一个执行此操作的 awk 命令(如下),但没有考虑该位点所在的染色体......所以我最终得到了落入每个染色体范围内的位点。

awk 'FNR==NR {A[$2]=$0;next} {for(i in A){if(i>$3 && i<$4){print A[i] FS $NF}}}' file1.txt file.txt

在执行此命令之前,我在检查染色体是否匹配时遇到问题。

有什么想法吗?

谢谢!

0 个答案:

没有答案