我收到这个错误
RE 错误:重复运算符操作数无效
在 FreeBSD sed 上,使用 csh。
命令是:
sed -rn 's/.*?VIEW ([^\s]+?) (AS .*?)\s([^\s]+?)\s([^\s]+?)/DROP VIEW \1;\nCREATE VIEW \1 \2;/p'
Run Code Online (Sandbox Code Playgroud)
我见过这个问题,但我没有任何*+
s,但我确实有一些*?
s,但这应该意味着非贪婪。我究竟做错了什么?
小智 6
在对该问题的评论中已经提到了这一点,但为了使答案更明确:
无论使用标准正则表达式还是扩展正则表达式模式,非贪婪匹配在 sed 中均不可用。
如果您知道应该终止匹配的字符,则可以使用以下技术,如下所示:https ://0x2a.at/blog/2008/07/sed--non-greedy-matching/
贪心匹配:
$ echo "<b>foo</b>bar" | sed 's/<.*>//g'
bar
Run Code Online (Sandbox Code Playgroud)
非贪婪匹配:
$ echo "<b>foo</b>bar" | sed 's/<[^>]*>//g'
foobar
Run Code Online (Sandbox Code Playgroud)