比如我有一包含许多基因的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
网友评论