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 parte4480
se 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