如何从多个文件中的一个文件中解析一列并连接输出?

问题描述 投票:0回答:1

我有一个这样的文件:

head allGenes.txt
ENSG00000128274
ENSG00000094914
ENSG00000081760
ENSG00000158122
ENSG00000103591
...

而且我有多个文件,例如* .v7.egenes.txt,例如,一个文件看起来像这样:

head Stomach.v7.egenes.txt
ENSG00000238009 RP11-34P13.7  1  89295 129223  - 2073 1.03557 343.245
ENSG00000237683   AL627309.1  1 134901 139379  - 2123 1.02105 359.907
ENSG00000235146 RP5-857K21.2  1 523009 530148  + 4098 1.03503 592.973
ENSG00000231709 RP5-857K21.1  1 521369 523833  - 4101 1.07053 559.642
ENSG00000223659 RP5-857K21.5  1 562757 564390  - 4236 1.05527 595.015
ENSG00000237973 hsa-mir-6723  1 566454 567996  + 4247 1.05299 592.876 

我想从所有* .v7.egenes.txt文件中获取与allGenes.txt中的任何条目匹配的行

我尝试使用:

grep -w -f allGenes.txt *.v7.egenes.txt > output.txt

但这需要永远完成。有没有办法在awk中执行此操作?

bash awk grep
1个回答
0
投票

您可以尝试一会儿阅读循环:

#!/bin/bash

while read -r line; do
  grep -rnw Stomach.v7.egenes.txt -e "$line" >> output.txt
done < allGenes.txt

因此,告诉while循环从allGenes.txt中读取所有行,并针对每行检查egenes文件中是否有匹配的行。那会成功吗?

© www.soinside.com 2019 - 2024. All rights reserved.