Using bash version 4 -- sh
does not have associative arrays
declare -A sum
while read key value; do ((sum[$key] += value)); done <file
for key in "${!sum[@]}"; do echo $key ${sum[$key]}; done
proton 15
neutron 20
hadron 7
electron 5
meson 18
Associative array keys have no natural ordering. You can pipe that for loop into sort
or sort -k2n
if you wish.