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

관련 정보