You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从FASTA文件中删除指定序列组并保留带_VEP的序列

搞定FASTA文件只留带_VEP的条目

你之前的命令为啥只输出ID没序列?因为FASTA是按「ID行+序列行」的条目组织的,你用逐行匹配的方式,把内容相同的序列行当成要删除的行(毕竟不带_VEP的条目序列和带_VEP的一模一样),结果序列行被误删,只剩带_VEP的ID行。

直接用awk按条目处理就行,不用额外的f2文件,一条命令搞定:

awk '/^>/ { keep = ($0 ~ /_VEP$/) ? 1 : 0 } keep { print }' f1.fasta > f3.fasta

命令逻辑

  • 碰到以>开头的ID行,就判断该行是否以_VEP结尾:是就标记「要保留」,不是就标记「不保留」
  • 只要标记了「要保留」,不管是ID行还是后面的序列行,都直接打印出来

要是你非得用f2文件(比如f2里存的是所有不带_VEP的ID,注意ID不要带开头的>),就用这个命令:

awk 'NR==FNR { ids_to_kick[$0] = 1; next } /^>/ { curr_id = substr($0,2); keep = !(curr_id in ids_to_kick) } keep { print }' f2.fasta f1.fasta > f3.fasta

为啥之前的命令失效?

  • grep -v -x -f f2.fasta f1.fasta:-x要求整行完全匹配,f2里的序列行和f1里带_VEP的序列行完全一致,所以这些序列行被当成要删除的内容,只剩不在f2里的带_VEP的ID行
  • 你用的那条awk命令也是逐行记录f2的内容,然后在f1里排除这些行,结果带_VEP的序列行因为和f2里的重复被过滤掉,只剩ID行

内容的提问来源于stack exchange,提问作者Vik02

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:16:24