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

AWK脚本问题:CSV数据按均价分组存入数组后无法正常输出

问题分析与修正

核心问题点

  • 均价计算时机错误:每一行都重新计算avg,但此时sum尚未累加完所有有效价格,导致中间行用错误均价分类产品。
  • 数组输出逻辑混乱:在每一行处理时都遍历打印数组,造成重复输出;且打印的是数组索引而非产品名称。
  • printf格式符错误:%.2应为%.2f,否则无法正确格式化浮点数。
  • 表头处理不严谨:虽然分类时跳过了表头,但累加阶段未明确跳过,虽不影响结果但不符合规范。

修正后的高效代码(无需重复读文件)

BEGIN{
    FS=","
    sum=0
    count=0
}
# 跳过表头,存储所有产品和价格,累加总价
NR > 1 {
    products[count] = $1
    prices[count] = $2
    sum += $2
    count++
}
END{
    # 计算最终均价
    avg = sum / count
    printf "Average Price: %.2f\n", avg
    
    # 按均价分类产品
    high_idx=0
    low_idx=0
    for (i = 0; i < count; i++) {
        if (prices[i] > avg) {
            expensive[high_idx++] = products[i]
        } else if (prices[i] < avg) {
            cheap[low_idx++] = products[i]
        }
    }
    
    # 输出分类结果
    print "\nExpensive Products:"
    for (i = 0; i < high_idx; i++) {
        print expensive[i]
    }
    
    print "\nCheap Products:"
    for (i = 0; i < low_idx; i++) {
        print cheap[i]
    }
}

运行结果

针对你的输入文件,执行脚本后会输出:

Average Price: 37.86

Expensive Products:
EG516
EG517
HG915

Cheap Products:
EG412
EG411
LG210
LG180

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:25:13