grep 正则表达式语法中的“+”不起作用

her*_*ys6 3 grep regular-expression

我在 Ubuntu 16.04

试: grep '.*' file1

输出: file nu-mber o-ne second string

试: grep '.+' file1

输出不存在

为什么加号不起作用?

Ste*_*itt 6

您需要告诉grep您正在使用扩展正则表达式:

grep -E '.+' file1
Run Code Online (Sandbox Code Playgroud)

扩展正则表达式运算符等效的标准基本正则表达式(由grepwithout 使用-E)虽然某些实现(如 GNU 的)也将其识别为扩展(并且您始终可以使用)。 +\{1,\}\+..*

(请注意,在这种特殊情况下grep -E .+,相当于grep -E .在不使用该-x选项时您正在寻找与正则表达式匹配的子字符串。在许多系统egrep上提供了与 等效的命令grep -E,但正如Graeme 指出的那样,这是过时的。)

  • 请注意,`egrep` 被认为已过时,因此首选 `grep -E` - http://pubs.opengroup.org/onlinepubs/7908799/xcu/egrep.html。并不是说它有任何消失的迹象。 (3认同)