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

如何使用AWK筛选基因与染色体匹配的唯一记录行?

解决方案

要实现每个基因($1)与染色体($2)的组合仅保留第一条记录,最可靠的方法是用AWK的关联数组跟踪已出现的组合,无需依赖数据排序:

核心命令

!seen[$1,$2]++ input.txt

命令解释

  • seen[$1,$2]:创建以基因+染色体为唯一键的关联数组,记录该组合是否已出现
  • !seen[$1,$2]++:组合首次出现时,seen[$1,$2]初始值为0,取反后为真,打印当前行;后续同一组合出现时,数组值递增为非0,取反后为假,跳过打印
  • 该逻辑自动保留每个基因-染色体组合的第一条匹配记录,同时保留对应的起始位置($3)

备选方案(仅适用于数据已按$1+$2连续排序的场景)

如果坚持用“和前一行比较”的思路,可使用以下脚本,但仅适用于同一基因-染色体组合的记录连续排列的情况:

BEGIN { prev1=""; prev2="" }
{
    if ($1 != prev1 || $2 != prev2) {
        print $0
        prev1 = $1
        prev2 = $2
    }
}

将命令中的input.txt替换为你的实际文件名即可运行,输出结果完全符合期望。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:46:13