declare -A c for((++b;b;)) { IFS=\$ read a b ((b=0x$b,c[$a]*=b))||{ c[$a]=$b;d[e++]=$a;} } for a in "${d[@]}" { printf "$a\$%x " ${c[$a]} }