Isso deve funcionar:
awk -F- '$1!=a{printf "%s", $1} {printf "-%s&", $2} {a=$1}' file | sed 's/&$/\n/g'
Saída:
4480-1&-2&-3&-15&4581-1&-2&-3&-4
Explanação:
-
O
awk -F-delimiter é- -
$1!=a{printf "%s", $1}imprime a primeira parte4480se não for igual à última linha processada -
{printf "-%s&", $2}imprime a segunda parte com&no final -
{a=$1}definir um para a linha processada -
sed 's/&$/\n/g'remove o último caractere que é&e adiciona uma nova linha