GNU awk имеет массив массивов, так что это довольно просто:
processToProduceOutput | gawk '
{count[$3][$2] += $1}
END {
for (ip in count)
print ip, 0 + count[ip]["Accepted"], 0 + count[ip]["Failed"]
}
'
, который производит
151.62.163.222 1 3
10.0.0.202 2 19
Чтобы сделать вывод более красивым, направьте в | column -t
0 + count...
позволит IP-адресу без принятого / неудачного показа 0 в соответствующем столбце.
Есть также этот слишком умный perl
perl -lane '
$c{$F[2]}{$F[1]} += $F[0];
}{
printf "%s %d %d\n", $_, map {0+$_} $c{$_}->@{"Accepted","Failed"} for keys %c;
'