Aqui está uma solução usando awk
. Ele acumula os valores em uma matriz.
awk -F ":" '{count[$2]+=$1} END {for (key in count) print key, count[key]}' awk_data.txt
E aqui está uma versão, usando um script bash
:
#!/usr/bin/env bash
declare -A count
while read line; do
key=${line##*:}
cnt=${line%%:*}
count[$key]=$(($cnt + ${count[$key]=0}))
done < "$1"
for K in "${!count[@]}"; do echo $K ${count[$K]}; done
E outra versão bash
dos comentários, usando IFS=:
#!/usr/bin/env bash
declare -A count
while IFS=: read -r cnt key; do
count[$key]=$(($cnt + ${count[$key]=0}))
done < "$1"
for K in "${!count[@]}"; do echo $K ${count[$K]}; done