Erro RE: operando do operador de repetição inválido

Erro RE: operando do operador de repetição inválido

Estou recebendo esse erro

Erro RE: operando do operador de repetição inválido

No FreeBSD sed, usando csh.

O comando é:

sed -rn 's/.*?VIEW ([^\s]+?) (AS .*?)\s([^\s]+?)\s([^\s]+?)/DROP VIEW \1;\nCREATE VIEW \1 \2;/p'

eu tenho vistoessa questãomas eu não tenho nenhum *+s, mas tenho alguns *?s, mas isso significa não-ganancioso. O que estou fazendo de errado?

Responder1

Já foi mencionado nos comentários à pergunta, mas para deixar a resposta mais explícita:

A correspondência não gananciosa não está disponível no sed, usando o modo regex padrão ou estendido.

Se você conhece o personagem que deve encerrar a partida, pode usar a seguinte técnica, encontrada aqui:https://0x2a.at/blog/2008/07/sed--non-greedy-matching/

Correspondência gananciosa:

$ echo "<b>foo</b>bar" | sed 's/<.*>//g'
bar

Correspondência não gananciosa:

$ echo "<b>foo</b>bar" | sed 's/<[^>]*>//g'
foobar

informação relacionada