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

如何用AWK处理基因数据:移除gene行并将exon替换为gene-X格式

按基因组分组替换exon为gene-X的AWK解决方案

输入文件(test.txt)

gene 1:362273700-362275735
exon 1:362275166-362275246
exon 1:362274811-362275058
exon 1:362274230-362274685
gene 1:362279796-362287281
exon 1:362279796-362280179
exon 1:362280576-362280662
exon 1:362280858-362280958
exon 1:362281056-362281106

预期输出

gene-1 1:362275166-362275246
gene-1 1:362274811-362275058
gene-1 1:362274230-362274685
gene-2 1:362279796-362280179
gene-2 1:362280576-362280662
gene-2 1:362280858-362280958
gene-2 1:362281056-362281106

需求说明

  • 过滤掉所有以gene开头的行
  • 将每个exon行替换为gene-X格式,X从1开始递增,且同一个gene对应的后续所有exon使用相同的X值

尝试过的错误命令及结果

命令1

awk '$1~/exon/ {print $0 (/^exon/ ? "-" (++c) : "")}' test.txt

输出:

exon 1:362275166-362275246-1
exon 1:362274811-362275058-2
exon 1:362274230-362274685-3
exon 1:362279796-362280179-4
exon 1:362280576-362280662-5
exon 1:362280858-362280958-6
exon 1:362281056-362281106-7

命令2

awk '$1~/exon/ {$1=$1 "-" (++count[$1])}1' test.txt

输出:

gene 1:362273700-362275735
exon-1 1:362275166-362275246
exon-2 1:362274811-362275058
exon-3 1:362274230-362274685
gene 1:362279796-362287281
exon-4 1:362279796-362280179
exon-5 1:362280576-362280662
exon-6 1:362280858-362280958
exon-7 1:362281056-362281106

正确的AWK命令

/^gene/ {gene_num++; next}
/^exon/ {print "gene-" gene_num, $2}

命令逻辑解释

  1. 当匹配到以gene开头的行时:
    • 递增gene_num计数器(初始默认0,第一次匹配后变为1)
    • 执行next跳过当前行,不输出任何内容
  2. 当匹配到以exon开头的行时:
    • 输出固定前缀gene-加上当前的gene_num,再拼接第二列的位置信息
  3. 未匹配上述两种模式的行会被自动忽略

运行该命令后即可得到预期的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 16:35:27