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

如何用AWK实现0-100数值的十位区间分布统计?

用AWK实现0-100数值按十位区间分组统计

现有一个包含100个0到100之间数值的列表,需按十位区间分组统计各区间的数值数量,示例如下:

10 number example:
4 2 22 1 2 2 3 33 84 84
cat numbers.txt|awk -f script.awk
0-9 : 5
10-19 : 0
20-29 : 1
30-39 : 1
40-49 : 0
50-59 : 0
60-69 : 0
70-79 : 0
80-89 : 2
90-99 : 0
100 : 0 

实现方案

1. 编写AWK脚本(script.awk)

# 初始化所有区间计数为0
BEGIN {
    for (i = 0; i < 10; i++) {
        count[i] = 0
    }
    count[10] = 0  # 单独处理100这个特殊值
}

# 遍历每个输入数值并归类统计
{
    for (num = 1; num <= NF; num++) {
        val = $num
        if (val == 100) {
            count[10]++
        } else {
            idx = int(val / 10)
            count[idx]++
        }
    }
}

# 按格式输出统计结果
END {
    for (i = 0; i < 9; i++) {
        printf "%d-%d : %d\n", i*10, i*10+9, count[i]
    }
    printf "90-99 : %d\n", count[9]
    printf "100 : %d\n", count[10]
}

2. 脚本说明

  • BEGIN块:提前初始化所有区间的计数变量为0,其中count[10]专门用于统计100的数量。
  • 主处理块:遍历输入的每个数值,判断是否为100:
    • 若是100,直接给count[10]加1;
    • 若不是,通过int(val/10)计算数值对应的区间索引(比如22除以10取整得2,对应20-29区间),给对应索引的计数加1。
  • END块:按要求的格式依次输出每个十位区间的统计结果,最后单独输出100的计数。

3. 使用方式

将数值列表保存到numbers.txt(每行单个或多个数值均可),执行以下命令即可得到结果:

awk -f script.awk numbers.txt
# 或通过管道读取输入
cat numbers.txt | awk -f script.awk

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:06:32