我有一个这样的文件:
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中执行此操作?
您可以尝试一会儿阅读循环:
#!/bin/bash
while read -r line; do
grep -rnw Stomach.v7.egenes.txt -e "$line" >> output.txt
done < allGenes.txt
因此,告诉while循环从allGenes.txt中读取所有行,并针对每行检查egenes文件中是否有匹配的行。那会成功吗?