sed -e “s /-.*$//”

1

O que significa o -. * $ / neste comando? Por favor me ajude a decifrar isso.

echo -n full | sed -e "s/-.*$//" 

Eu sei o que o sed faz e tudo o mais, eu só quero saber o que é essa -. * $ parte.

    
por Karolos 07.03.2012 / 15:18

4 respostas

9

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

    
por 07.03.2012 / 15:21
1

Essencialmente, este comando remove tudo, desde o primeiro traço ('-') até o final da entrada.

    
por 07.03.2012 / 15:22
0

$ é o fim da linha regex, então ele lê uma linha com um - seguido por qualquer coisa na linha.

    
por 07.03.2012 / 15:21
0
  • . é qualquer caractere.
  • * é "zero ou mais vezes"

Assim, .* é "qualquer caractere, zero ou mais vezes"

    
por 07.03.2012 / 15:21