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

如何用bash正则实现DNA序列压缩 将AACCCC转换为2A4C格式

单核苷酸串联重复序列压缩Bash实现方案

方法1:Bash环境Perl单行实现(正则匹配)

依赖系统默认预装的perl,利用正则捕获连续相同碱基后计算长度替换,效率高适合批量处理:

# 单条序列压缩
echo "AAAATTCGCATTTTTTAGGTA" | perl -pe 's/(([ATCG])\2*)/length($1).$2/ge'

# 压缩后直接提取重复长度数字
echo "AAAATTCGCATTTTTTAGGTA" | perl -pe 's/(([ATCG])\2*)/length($1)." "/ge'

示例输入:AAAATTCGCATTTTTTAGGTA
压缩输出:4A2T1C1G1C1A6T1A2G1T1A
提取数字输出:4 2 1 1 1 1 6 1 2 1 1

如果需要批量处理FASTA文件,保留序列名行仅压缩序列行:

perl -pe 'unless(/^>/) { s/(([ATCG])\2*)/length($1).$2/ge }' input.fasta > compressed.fasta

方法2:纯Awk实现(无额外依赖)

适用于没有perl的极简环境:

echo "AAAATTCGCATTTTTTAGGTA" | awk '{
    s = $0; res = ""; n = length(s)
    if (n == 0) {print ""; exit}
    cur = substr(s,1,1); cnt = 1
    for (i=2; i<=n; i++) {
        c = substr(s,i,1)
        if (c == cur) cnt++
        else {res = res cnt cur; cur = c; cnt =1}
    }
    res = res cnt cur; print res
}'

相关生信工具推荐

  • seqkit:通用高通量序列处理工具,支持批量统计全基因组范围的串联重复分布,内置多线程优化适合大文件处理
  • trf(Tandem Repeats Finder):专门用于核酸串联重复识别的工具,可直接输出重复单元长度、拷贝数、序列位置等详细信息,无需自行开发压缩逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:45:02