美文网首页Linux学习与应用技巧实用技巧
如何从一个文件中匹配查找另一个文件中的内容

如何从一个文件中匹配查找另一个文件中的内容

作者: 宗肃書 | 来源:发表于2021-05-26 14:58 被阅读0次

比如我有一包含许多基因的ID文件,和所有ID对应的序列文件,文件内容如下

cat geneid.txt
gene1
gene11
gene34
gene57
gene78
gene789

less -S gene.fa
>gene1 length=2
AT
>gene2 length=6
ATCGGT
>gene3 length=8
ATATATCG
>gene4 length=15
ATATATATATATATC

如果我想找geneid.txt里面所有基因对应的序列该怎么做?

用shell简单命令就可轻松解决
  • 对于匹配gene个数比较小的文件
cat geneid.txt | tr "\n" "|"
gene1|gene11|gene34|gene57|gene78|gene789|
egrep -w -A 1 "gene1|gene11|gene34|gene57|gene78|gene789" gene.fa > geneid.fa
#-A 1 指匹配到到匹配上的字符串的下一行
  • 对于匹配个数较多的序列,超过10条以上
cat geneid.txt | while read id;
do
         arr=(${id})
         geneid=${arr[0]}
grep  -w -A1 "$geneid" gene.fa >> geneid.fa
done

相关文章

网友评论

    本文标题:如何从一个文件中匹配查找另一个文件中的内容

    本文链接:https://www.haomeiwen.com/subject/fwyksltx.html