我收到這個錯誤
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