grep 指令傳回 0 - 全域匹配所有非數字字符

grep 指令傳回 0 - 全域匹配所有非數字字符

我正在尋找一個檔案來搜尋所有不包含數字的字串,我想出了以下正規表示式。

\D*/g

在這個線上工具中,它可以按照我想要的方式運作:https://regex101.com/#pcre,但是當我執行以下命令時:

grep -c "\D*/g" nonDistortResults.txt 

它正在回歸0

該文件的格式如下:

2573
kitchenDoor 2573
2573
2573
2573
2574
2574
2574
2574
kitchenDoor 2574
2574
2574
2575
2575
2575
2575
2575
kitchenDoor 2575
2576

所以在上面的例子中我希望它回來3.

答案1

您需要如下調整您的模式:

grep -c \D nonDistortResults.txt
  • 我們不需要「貪婪」標誌,因為 grep 已經可以處理行了
  • 這裡不需要引號
  • 星號可以是任意數量的結果,包括 0(因此使用它將為每一行傳回 true)

如果您需要再次使用一些 Pearl 正規表示式 (PCRE),您可以查看 grep 的 -P 選項,但手冊頁顯示:

-P, --perl-regexp
將 PATTERN 解釋為 Perl 正規表示式(PCRE,見下文)。這是高度實驗性的,grep -P 可能會警告未實現的功能。

相關內容