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

如何用awk计算序列长度并修改目标文件的标识行格式?

用AWK实现序列标识行的修改与长度计算

先直接给你能解决问题的AWK命令,然后再拆解每个部分的作用:

awk '{
    # 提取序列部分(每行最后一个字段)
    seq = $NF
    # 计算序列长度
    seq_len = length(seq)
    # 构造新的标识前缀:Assembly_AAAS_序号_长度
    new_id = "Assembly_AAAS_" NR "_" seq_len
    # 输出新标识和原序列
    print new_id, seq
}' your_input_file.txt

命令细节解释:

  • NR:AWK内置变量,表示当前处理的行号,正好用来生成你需要的1、2、3这样的序号
  • $NF:表示当前行的最后一个字段,也就是你的序列部分(ATG...)
  • length(seq):直接计算序列字符串的长度,这就是你要的序列长度计算方法
  • 最后把构造好的新标识和原序列拼接输出,就得到了你想要的格式

测试你的输入示例:

输入行:

AAAS:1220136:1220159:-:0::NW_015494524.1:1220136-1220159(-) ATGTCGATGCTCGATC
AAAS::1215902:1215986:-:1::NW_015494524.1:1215902-1215986(-) ATGCGATGCTAGCTAGCTCGAT
AAAS:1215614:1215701:-:1::NW_015494524.1:1215614-1215701(-) ATGCCGCGACGCAGCACCCGACGCGCAG

运行命令后输出:

Assembly_AAAS_1_16 ATGTCGATGCTCGATC
Assembly_AAAS_2_22 ATGCGATGCTAGCTAGCTCGAT
Assembly_AAAS_3_28 ATGCCGCGACGCAGCACCCGACGCGCAG

单独计算序列长度的方法

如果只是想批量计算每行序列的长度,用更简单的命令就行:

'{print length($NF)}' your_input_file.txt

这个命令会直接输出每行序列的长度值,对应上面的16、22、28。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:25:21