在 grep 正则表达式语法中无法使用“+”

在 grep 正则表达式语法中无法使用“+”

我使用的是 Ubuntu 16.04

试: grep '.*' file1

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

试:grep '.+' file1

输出缺失

为什么 plus 不起作用?

答案1

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

grep -E '.+' file1

标准基本正则表达式grep(由without使用-E)相当于扩展正则表达式 +尽管\{1,\}某些实现(例如 GNU 的)也将\+其识别为扩展(并且您始终可以使用..*)。

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

答案2

使用 GNU grep(Ubuntu 上默认),您还可以使用反斜杠启用扩展行为。例如:

grep '.\+' file1

答案3

我相信 + 是一个扩展的正则表达式元字符。尝试使用egrep.

相关内容