我收到这个错误
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