Como combinar dígitos seguidos de um ponto usando sed?

61

Estou tentando usar sed para substituir todos os padrões por dígitos seguidos imediatamente por um ponto (como 3. , 355. ) por uma string vazia. Então eu tento:

sed 's/\d+\.//g' file.txt

Mas isso não funciona. Por que isso?

    
por Mika H. 01.12.2012 / 22:15

3 respostas

85

Como sed não é expressões regulares perladas, não tem uma abreviação \d :

sed 's/[[:digit:]]\+\.//g'

documentação da expressão regular sed aqui .

    
por 01.12.2012 / 22:18
55

Dois problemas:

  1. sed não suporta \d . Use [0-9] ou [[:digit:]] .

  2. + deve ser backslashed para obter o significado especial: \+ .

por 01.12.2012 / 22:19
3

A página man do man faz referência à página man re_format. Faz 2 distinções: (1) expressões regulares obsoletas versus estendidas; (2) expressões regulares não aprimoradas versus aprimoradas. Todas as 4 combinações são possíveis. Existe suporte no sed para obsoletos e estendidos, mas em ambos os casos apenas para não-aprimorados. O operador \ d é um recurso de expressões regulares aprimoradas, portanto não é suportado pelo sed.

    
por 27.06.2017 / 00:10

Tags