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

如何提取制表符分隔文件中含缺失基因型(./.)的列表头?

解决方案

直接用单条awk命令就能完成需求,无需嵌套调用:

BEGIN {FS="\t"}
NR==1 {
    for (i=1; i<=NF; i++) header[i] = $i
    next
}
{
    for (i=1; i<=NF; i++) {
        if ($i == "./.") has_missing[i] = 1
    }
}
END {
    for (i=2; i<=NF; i++) {
        if (has_missing[i]) print header[i]
    }
}

将上述命令保存为脚本或者直接运行:awk -f script.awk your_file.txt,就能得到预期输出。

命令说明

  • BEGIN {FS="\t"}:指定输入文件的分隔符为制表符,确保正确识别每一列。
  • 第一行(NR==1):把所有列的表头存入header数组,然后跳过当前行的后续处理。
  • 后续每一行:遍历所有列,只要某列出现./.,就给该列标记has_missing[i]=1。
  • END块:从第2列开始(因为第1列是位点名称,不是患者ID),遍历所有列,输出标记过有缺失数据的列对应的表头。

原代码问题分析

你之前的嵌套awk写法逻辑混乱:

  1. 第一个awk的printf NR==1, sep "\n"语法错误,无法正确生成列索引。
  2. 试图通过变量传递列索引的方式不可靠,容易出现语法解析问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:57:24