bash 将具有相同第一列的列相加

标签 bash unix uniq

我有一个文件,其名称在第一列,计数在第二列。它按名称排序。

    dan 3355
    dan 667
    dan 889
    frank 8
    frank 99
    frank 90
    ian 9

我想合并所有相同的名字并输出每个名字的总数:

    dan 4911
    frank 197
    ian 9

我知道我可以使用 uniq 来获取相同行的总数,但我如何才能保留我的数据中的计数?

最佳答案

您可以使用 awk 的关联数组:

 awk '{arr[$1]+=$2;} END {for (i in arr) print i, arr[i]}' filename

关于bash 将具有相同第一列的列相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13649845/

相关文章:

Linux : remove duplicate line

linux - 如何在不连接它们的情况下计算 2 个字段中的唯一值?

bash - 自动化 az 容器执行

c++ - 使用 ctime 转换 UNIX 时间戳

linux - awk 比较两个文件中的列,如果在文件 2 中没有看到文件 1 列,则打印文件 1 列 [与此相关的类似帖子被错误地询问]

linux - 流水线切割排序 uniq

arrays - 一个文本文件中的两个数组

bash - 将 ${} 变量传递给 awk 而不会丢失它

c - 需要在C代码中运行 'read'命令

c - 该程序中的 fgets