下面我有一些原始数据。我的目标是匹配“第一列”值,并在每个IP地址的单行输出中包含总字节数。 例如输出:
81.220.49.127 6654
81.226.10.238 328
81.227.128.93 84700
原始数据:
81.220.49.127 328
81.220.49.127 328
81.220.49.127 329
81.220.49.127 367
81.220.49.127 5302
81.226.10.238 328
81.227.128.93 84700
任何人都可以告诉我如何做到这一点。
答案 0 :(得分:4)
使用关联数组:
awk '{a[$1]+=$2}END{for (i in a){print i,a[i]}}' infile
替代保留订单:
awk '!($1 in a){b[++cont]=$1}{a[$1]+=$2}END{for (c=1;c<=cont;c++){print b[c],a[b[c]]}}' infile
数组的另一种方式 ::
awk 'lip != $1 && lip != ""{print lip,sum;sum=0}
{sum+=$NF;lip=$1}
END{print lip,sum}' infile
<强>结果强>
81.220.49.127 6654
81.226.10.238 328
81.227.128.93 84700