.*
é um regexp ganancioso, correspondendo à possível correspondência mais longa . Você precisa combinar a partida mais curta, mas combiná-la globalmente em toda a linha. Experimente
sed 's/-[^:-]*:/:/g' 1.file > 2.file
A classe de caractere [^:-]
corresponde a qualquer coisa exceto dois pontos e traço (e talvez deva corresponder a qualquer coisa exceto cólon somente), então o regexp diz "traço seguido por qualquer número de não traço, não caracteres -colon seguidos de dois pontos ". Em seguida, ele substitui isso por dois pontos (desde que você queria manter isso) e faz a substituição globalmente (o g
à direita) na linha. Se você omitir o g
, somente a primeira instância seria substituída.