在 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.

相關內容