使用linux脚本进行简单聚合

ika*_*han 4 linux bash awk

假设我有一个包含以下行的文本文件:

foo 10
bar 15
bar 5
foo 30
...
Run Code Online (Sandbox Code Playgroud)

生成以下输出的最简单方法是什么:

foo 40
bar 20
Run Code Online (Sandbox Code Playgroud)

P.P*_*.P. 9

这样做:

awk '{arr[$1]+=$2;} END { for (i in arr) print i, arr[i]}'  file
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请阅读Awk的关联数组.


anu*_*ava 5

使用这个awk脚本:

awk '{sums[$1] += $2} END {for (a in sums) print a, sums[a]}' infile
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

foo 40
bar 20
Run Code Online (Sandbox Code Playgroud)

使用这个关于使用关联数组的awk教程: