Una -línea awk:
$ awk -F, '{a[$1] += $2} END { for (x in a) printf "%s, %s\n", x, a[x] }' < data
user1, 40
user2, 11
user3, 23
Eso es bastante sencillo, el separador de campo se establece en la coma con-F,
(this, y la coma en la salida son los únicos cambios necesarios del duplicado ). $1
y $2
son el primer y segundo campo, y dado que awk tiene matrices asociativas, recopilar las sumas es simple. Es posible que necesite sort
la salida después si eso importa.
Claro, también podríamos hacer esto puramente en Bash/ksh/zsh, ya que también admite matrices asociativas, pero sería más feo, más lento y más propenso a accidentes con valores divertidos. Y solo es útil en un sistema que, por alguna razón, tiene un caparazón grande, pero no awk. (vea el historial de edición si realmente lo desea...)