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

如何使用Bash脚本按唯一字符串累加其对应的数值?

解决方法

你可以直接在原有提取逻辑的基础上借助awk完成分组累加,无需额外复杂逻辑:

一行命令版本(直接追加到原有管道后即可)

cat file.txt | cut -d " " -f 1,3 | awk '{sum[$1] += $2} END {for (key in sum) print key, sum[key]}' | sort

逻辑说明

  • 关联数组sum以提取的字符串为键,对应累加值为值
  • 逐行读取时将当前行的整数累加到对应字符串的计数中
  • 全部处理完成后遍历输出所有唯一字符串和对应的累加总和
  • 末尾追加sort可以按字符串顺序输出结果,不需要排序可以去掉这部分

独立Bash脚本版本

如果需要封装为可复用脚本,可新建sum_by_string.sh写入以下内容:

#!/bin/bash
if [ $# -ne 1 ]; then
    echo "用法: $0 <待处理文件路径>"
    exit 1
fi

target_file="$1"
# 执行提取+累加统计逻辑
cut -d " " -f 1,3 "$target_file" | awk '{
    sum[$1] += $2
} END {
    for (str in sum) {
        printf "%s %d\n", str, sum[str]
    }
}' | sort

使用方法

  1. 给脚本添加执行权限:
    chmod +x sum_by_string.sh
  2. 运行脚本传入待处理文件即可:
    ./sum_by_string.sh file.txt

示例输出

针对你给出的样例数据,最终输出结果为:

red 25
white 59
yellow 22

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:09:05