使用 awk 根据另一列的值对一列的值求和

Edg*_*kas 1 unix shell awk

我正在尝试使用 来总结列中的某些数字awk。我想将第二列中具有相同 IP 地址的数字相加。

2001:778:0:1::21 44
2001:778:0:1::21 1406
2001:778:0:1::21 66643
88.222.10.7 66643
88.222.10.7 1406
88.222.10.7 -
88.222.10.7 66643
88.222.10.7 1406
121.141.172.40 235
121.141.172.40 235
Run Code Online (Sandbox Code Playgroud)

期望的输出:

2001:778:0:1::21 68093
88.222.10.7 136098
121.141.172.40 470
Run Code Online (Sandbox Code Playgroud)

Rav*_*h13 6

第一个解决方案:您可以尝试以下操作吗?(如果您不关心输出中第一个字段的顺序)

awk '{a[$1]+=$NF} END{for(i in a){print i,a[i]}}'  Input_file
Run Code Online (Sandbox Code Playgroud)

第二个解决方案:如果您想保持第一个字段的顺序与 Input_file 的顺序相同,请尝试以下操作。

awk '!b[$1]++{c[++count]=$1} {a[$1]+=$NF} END{for(i=1;i<=count;i++){print c[i],a[c[i]]}}'  Input_file
Run Code Online (Sandbox Code Playgroud)