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

如何删除FASTA文件中头部无日期信息的序列记录

你给出的示例FASTA头行以|为分隔符,日期格式为YYYY-MM-DD且固定位于第三个字段,以下方案均基于该格式规则设计:

方法1:使用生物信息学专用工具Seqkit(推荐,容错率高)

Seqkit是FASTA/Q文件处理的常用工具,支持超大文件流式处理,不会出现换行、序列截断类的错误:
运行命令:

seqkit grep -r -p '^>[^|]+\|[^|]+\|\d{4}-\d{2}-\d{2}\|' 你的输入文件.fasta -o 过滤后输出文件.fasta

命令参数说明:

  • -r:启用正则表达式匹配模式
  • -p:指定匹配规则,这里只会保留头行以>开头、第三个字段为YYYY-MM-DD格式日期的序列

方法2:使用系统自带awk命令(无需安装额外工具)

Linux、macOS系统均自带awk工具,无需额外安装,直接运行以下命令即可:

awk '/^>/{keep=0; if($0 ~ /\|[0-9]{4}-[0-9]{2}-[0-9]{2}\|/) keep=1} keep' 你的输入文件.fasta > 过滤后输出文件.fasta

命令逻辑说明:

  • 每次遇到>开头的序列头行时,先默认标记为不保留
  • 检查头行是否包含|YYYY-MM-DD|格式的日期字段,符合要求则标记为保留
  • 所有标记为保留的头行和对应的序列都会输出到结果文件

可选优化(避免误匹配)

如果确认日期固定为头行第三个|分隔的字段,可以把规则写得更严格,避免其他位置出现类似格式的字符串导致误判:

awk 'BEGIN{FS="|"} /^>/{keep=0; if($3 ~ /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/) keep=1} keep' 你的输入文件.fasta > 过滤后输出文件.fasta

结果校验

处理完成后可以统计前后的序列数量确认过滤效果:

# 同时统计输入和输出文件的序列数
grep -c '^>' 你的输入文件.fasta 过滤后输出文件.fasta

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:36:01