这页面说正则表达式中的任何乘数都可以带有“?”后缀进行非贪婪搜索。但是,我不知道如何让它在 grep 中工作。
grep -E '^.*?$' file
打印全文。
如何使用 grep 进行非贪婪的正则表达式搜索?
答案1
您需要grep
PCRE(Perl 兼容正则表达式)支持。例如,GNUgrep
有这个——可以通过该-P
选项来利用。还有一个名为 的独立程序pcregrep
,可以通过常规打包安装在许多系统上。
请注意,-E
启用不支持令牌非贪婪匹配的 ERE(扩展正则表达式)?
。
因此,使用 GNUgrep
你可以这样做:
grep -Po '^.*?foo' file
从一开始就匹配(并提取)到第一个foo
。