Вы можете сделать это за два прохода. Создайте a.tmp , используя:
{ total[$1] += $3}
END {for (group in total) {print group, total[group]}}
Это создает временный файл с итогами группы:
bbb 4
aaa 6
Затем сделайте второй проход с:
BEGIN {
while ((getline line < "a.tmp") > 0) {
split(line, fields, " ")
group[fields[1]] = fields[2]
}
close("a.tmp")
}
{ printf("%s/%d\n", $0, group[$1]) }
Это дает результат, который вы ищете:
aaa bbb 1/6
aaa ccc 2/6
aaa ddd 3/6
bbb ww 1/4
bbb kio 3/4