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

如何用awk打印制表符文件的第1列及所有raw_counts列?

解决方法

你的原有脚本从第3列开始输出所有字段,完全没有做筛选,所以输出和输入一致,无法满足提取第1列+所有raw_counts列的需求。以下是修正后的awk脚本:

BEGIN {FS = "\t"; OFS = "\t"}
NR == 1 {
    # 缓存第一行的样本表头
    for (i=1; i<=NF; i++) h1[i] = $i
    next
}
NR == 2 {
    # 收集所有raw_counts列的索引,同时输出第一行的筛选后表头
    printf "%s", h1[1]
    for (i=1; i<=NF; i++) {
        if ($i == "raw_counts") {
            cols[++n] = i
            printf "%s%s", OFS, h1[i]
        }
    }
    printf "\n"
    # 输出第二行的字段名:gene + raw_counts
    printf "%s", $1
    for (j=1; j<=n; j++) {
        printf "%s%s", OFS, $(cols[j])
    }
    printf "\n"
    next
}
# 处理后续数据行
{
    printf "%s", $1
    for (j=1; j<=n; j++) {
        printf "%s%s", OFS, $(cols[j])
    }
    printf "\n"
}

脚本说明

  1. 第一行处理:缓存样本名称行的所有字段,后续用于生成筛选后的表头
  2. 第二行处理:遍历字段名,记录所有值为raw_counts的列索引,同时输出筛选后的表头(第一列+对应样本名)和字段名行(gene+raw_counts)
  3. 数据行处理:输出第一列,再依次输出所有raw_counts列的值

使用命令

将脚本保存为prog.awk,执行:

awk -f prog.awk input.txt > output.csv

执行后输出结果与你的需求一致(注:你给出的期望输出第二行末尾的RPKM应为笔误,脚本会严格输出所有raw_counts列)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:40:24