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 .
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?
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 .
Dois problemas:
sed
não suporta \d
. Use [0-9]
ou [[:digit:]]
.
+
deve ser backslashed para obter o significado especial: \+
.
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.