$ str="45788-4rbf-77458-ik-90-98"
$ cat IN.txt
@96
@97
@98
@99
@100
$ str1=$(echo $str|awk -F- '{print $1"-"$2}')
$ str2=$(echo $str|awk -F- '{print $3"-"$4"-"$5"-"$6}')
$ awk '{print "'$str1'"$0"-'$str2'"}' IN.txt > OUT.txt
$ cat OUT.txt
45788-4rbf@96-77458-ik-90-98
45788-4rbf@97-77458-ik-90-98
45788-4rbf@98-77458-ik-90-98
45788-4rbf@99-77458-ik-90-98
45788-4rbf@100-77458-ik-90-98
если str, str1,str2 фиксированные то можно и упростить:
$ awk '{print "45788-4rbf"$0"-77458-ik-90-98"}' IN.txt > OUT.txt