Recibo este error
Error de RE: operando del operador de repetición no válido
En FreeBSD sed, usando csh.
El comando es:
sed -rn 's/.*?VIEW ([^\s]+?) (AS .*?)\s([^\s]+?)\s([^\s]+?)/DROP VIEW \1;\nCREATE VIEW \1 \2;/p'
He vistoesta preguntapero no tengo ninguna *+
s, pero sí tengo algunas *?
s, pero se supone que eso significa no codicioso. ¿Qué estoy haciendo mal?
Respuesta1
Ya se mencionó en los comentarios a la pregunta, pero para que la respuesta sea más explícita:
La coincidencia no codiciosa no está disponible en sed, ya sea utilizando el modo de expresión regular estándar o extendido.
Si conoces el personaje que debería terminar la partida, puedes usar la siguiente técnica, como se encuentra aquí:https://0x2a.at/blog/2008/07/sed--non-greedy-matching/
Coincidencia codiciosa:
$ echo "<b>foo</b>bar" | sed 's/<.*>//g'
bar
Coincidencia no codiciosa:
$ echo "<b>foo</b>bar" | sed 's/<[^>]*>//g'
foobar