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

如何用Linux命令行(如awk)高效统计FASTA文件序列的行数和字符数

用awk高效统计FASTA文件的序列行数与字符数

针对大FASTA文件的统计需求,awk是非常合适的选择——它基于C实现,逐行处理内存占用低,速度远快于普通Python脚本。以下是直接可用的解决方案:

核心awk脚本

/^>/ {
    # 输出上一个序列的统计结果(如果存在)
    if (id != "") print id, lines, chars
    # 提取当前序列标识(去掉开头的>)
    id = substr($0, 2)
    # 重置统计计数器
    lines = 0
    chars = 0
    next
}
# 处理序列行
{
    lines++
    chars += length($0)
}
# 处理最后一个序列的输出
END {
    if (id != "") print id, lines, chars
}

使用方式

  1. 将上述代码保存为fasta_stats.awk,然后运行:
awk -f fasta_stats.awk your_fasta_file.fasta
  1. 或者直接使用单行命令:
awk '/^>/ {if(id!="")print id,lines,chars; id=substr($0,2); lines=0; chars=0; next} {lines++; chars+=length($0)} END{if(id!="")print id,lines,chars}' your_fasta_file.fasta

输出说明

默认输出格式为标识 行数 字符数,如果需要用制表符分隔(方便后续导入表格工具),可以将print id, lines, chars改为print id "\t" lines "\t" chars。

优势说明

awk不需要将整个文件加载到内存,逐行处理时仅保留当前序列的统计状态,处理GB级别的大FASTA文件时性能优势明显,比常规Python脚本(尤其是未做内存优化的实现)快数倍。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 20:37:33