. significa qualquer caractere, * significa corresponder a qualquer valor (entre 0 e infinito) da correspondência anterior e $ significa o final da linha. Portanto, este comando sed irá corresponder - seguido por todos os caracteres depois até encontrar o fim da linha e substituir por nada, ou seja, excluí-lo.
Então, por exemplo: aajaaa-woijsdfljkwe94 se torna aajaaa
Além disso, deve-se notar que * é 'ganancioso', o que significa que ele corresponderá ao maior número de caracteres possível. Então, por exemplo: alasdf-slwddo-sdf se torna alasdf , não alasdf-slwddo .