我正在尝试使用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
所需的输出:
2001:778:0:1::21 68093
88.222.10.7 136098
121.141.172.40 470
答案 0 :(得分:4)
第一种解决方案: 您能否请尝试以下操作(以防万一您不必担心输出中第一个字段的顺序)
awk '{a[$1]+=$NF} END{for(i in a){print i,a[i]}}' Input_file
第二种解决方法: :如果要使第一个字段的顺序与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