.
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
.