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