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

使用AWK按列统计满足多数值条件的实例数量

用AWK批量统计多列多条件的数值满足次数

针对你需要统计多列数据中各条件满足次数的需求,这里提供一个通用的AWK脚本,能一次性处理所有列和指定条件,适配带行列标题的输入文件:

NR == 1 {
    # 存储列名(跳过第一列的行标题)
    for (i=2; i<=NF; i++) {
        col_name[i] = $i
    }
    next
}
{
    # 遍历每一列的数值(从第二列开始)
    for (i=2; i<=NF; i++) {
        val = $i
        # 按条件计数
        if (val >= 0.8) count[i]["ge08"]++
        if (val >= 0.9) count[i]["ge09"]++
        if (val == 1) count[i]["eq1"]++
    }
}
END {
    # 按指定格式输出统计结果
    for (i=2; i<=length(col_name)+1; i++) {
        printf "%s: >=0.8: %d, >=0.9: %d, ==1: %d\n",
            col_name[i],
            count[i]["ge08"]+0,
            count[i]["ge09"]+0,
            count[i]["eq1"]+0
    }
}

脚本说明

  1. 表头处理:第一行(NR==1)提取列名存入数组,后续输出时对应到具体列。
  2. 数据行处理:对每一行的数值列逐一判断,用二维数组count[列序号][条件标识]累计各条件的满足次数。
  3. 结果输出:遍历所有列,按你要求的格式输出,+0确保没有满足的条件显示为0而非空值。

示例测试

把脚本保存为count_conditions.awk,运行命令:

awk -f count_conditions.awk input.file

针对你提供的示例输入,输出结果为:

Column1: >=0.8: 4, >=0.9: 4, ==1: 0
Column2: >=0.8: 5, >=0.9: 5, ==1: 0
Column3: >=0.8: 5, >=0.9: 5, ==1: 0
Column4: >=0.8: 5, >=0.9: 5, ==1: 0

扩展说明

如果需要添加更多条件(比如>=0.95),只需两步:

  1. 在数据处理块中添加判断:if (val >= 0.95) count[i]["ge095"]++
  2. 在输出块的printf中追加对应的输出项:, >=0.95: %d,并在参数列表中加入count[i]["ge095"]+0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 06:30:18