Linux分组、求和和计数

标签 linux bash shell

从目录列表中,我创建了一个输出,在第 1 列中显示文件大小,在第 2 列中显示文件名的一部分(这是一个日期)。

178694671 2017-10-14
175332227 2017-10-14
175021608 2017-10-14
174851281 2017-10-14
175316643 2017-10-14

我现在需要做的是对这个列表进行分组、求和和计数。按第 2 列对文件进行分组和计数,并对与每个分组关联的文件大小求和。

以上输出的结果如下所示:

879216430 2017-10-14 5

我试过了

awk '{sum[$1]+= $2;}END{for (date in sum){print sum[date], date;}}'

但它提供了奇怪的结果,我真的不明白它在做什么。

有人能帮忙吗?

最佳答案

使用另一个关联的数组来存储日期的频率,如下所示:

awk '{++freq[$2]; sum[$2]+=$1}
END{for (date in sum) print sum[date], date, freq[date]}' file

879216430 2017-10-14 5

还要注意你的数组的键是 $2 即日期不是 $1

关于Linux分组、求和和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47354450/

相关文章:

linux - 如何更改和重新加载正在运行的 shell 脚本?

linux - 为什么 make file 无法从特定的 src 目录中获取源文件?

linux - 没有夏令时 (DST) 的给定时区的 GMT/UTC 偏移量(小时/分钟)

linux - pwd中的所有目录查找目录中的文件数

linux - 如何使 ftrace 可以使用 linux 内核函数?

linux - 如何在 unix 中捕获 screen 命令的输出?

linux - 将文件路径添加到文本的每一行

bash - 从 WSL 访问现有的 Windows 环境变量

bash - 是否可以在 msys/mingw 上模拟进程替换(使用 bash 3.x)

python - 有什么方法可以在更改代码时不重新启动而使用 django shell