Pessoalmente, eu faria isso tirando proveito da expansão de chaves do shell:
$ while read a b; do echo $a $(eval echo {"$(sed 's/-/../' <<<$b)"}); done < file
A 1 2 3
B 5 6 7
ou, para ter valores separados por vírgulas
$ while read a b; do
echo $a $(eval echo {"$(sed 's/-/../' <<<$b)"} | sed 's/ /,/g');
done < file
A 1,2,3
B 5,6,7
Desde que você pediu um forro awk one, você poderia tentar:
$ sed 's/-/ /' file |
awk '{printf "%s ", $1; for(i=$2;i<=$NF-1;i++){printf "%d,", i}; print $NF}'
A 1,2,3
B 5,6,7
ou, para fazer tudo no awk:
$ awk '{gsub(/-/," ")}{printf "%s ", $1;
for(i=$2;i<=$NF-1;i++){printf "%d,", i}; print $NF}' file
A 1,2,3
B 5,6,7