sed com regex não funciona como esperado [duplicado]

0

Esta é a primeira vez que tento usar o SED.

Eu posso obter o comando de substituição para trabalhar com strings simples. Como em:

sed -i 's/foo/bar/g' file.txt

No entanto, quando tento usar um Regex, ele pára de funcionar. O regex que eu quero usar está tentando identificar URLs:

(https?:)?(\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)

Estou tentando remover todos os URLs de um arquivo de texto. Aqui está o meu comando completo:

sed -i 's/(https?:)?(\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)//g' file.txt

Alguém pode ver o problema?

    
por WillD 03.07.2018 / 06:05

1 resposta

1

Você pode adicionar -r ao seu comando sed para ativar as expressões regulares estendidas.

Em poucas palavras, sem -r , ? , + , () , {} e | têm um significado literal e você precisa prefixá-los com uma barra invertida para fornecer "regex" significado.

Consulte a documentação sobre o Site GNU para uma explicação mais profunda.

    
por 03.07.2018 / 06:25