Ошибка RE: недопустимый операнд оператора повторения

Ошибка RE: недопустимый операнд оператора повторения

Я получаю эту ошибку

Ошибка RE: недопустимый операнд оператора повторения

На FreeBSD sed, использую csh.

Команда:

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

я виделэтот вопросно у меня нет никаких *+s, но у меня есть некоторые *?s, но это должно означать нежадность. Что я делаю не так?

решение1

Это уже упоминалось в комментариях к вопросу, но чтобы сделать ответ более явным:

Нежадное сопоставление недоступно в sed, как при использовании стандартного, так и расширенного режима регулярных выражений.

Если вы знаете символ, который должен завершить матч, вы можете использовать следующую технику, описанную здесь:https://0x2a.at/blog/2008/07/sed--non-greedy-matching/

Жадное сопоставление:

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

Нежадное сопоставление:

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

Связанный контент