Awk de uma linha:
$ awk -F, '{a[$1] += $2} END { for (x in a) printf "%s, %s\n", x, a[x] }' < data
user1, 40
user2, 11
user3, 23
Isso é bastante simples, o separador de campo é definido para a vírgula com -F,
(isso e a vírgula na saída são as únicas alterações necessárias da duplicata). $1
e $2
são o primeiro e o segundo campos, e como o awk possui matrizes associativas, coletar as somas é simples. Você pode precisar sort
da saída depois, se isso for importante.
Claro, poderíamos fazer isso puramente no Bash / ksh / zsh também, já que ele também suporta matrizes associativas, mas seria mais feio, mais lento e mais propenso a acidentes com valores engraçados. E só é útil em um sistema que, por algum motivo, tem um grande shell, mas não awk. (veja o histórico de edições, se você realmente quer isso ...)