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

おすすめ記事