Grep

Grep 兩個單詞之間的任何內容,只要它少於指定的字元數?

  • November 10, 2021

我正在嘗試使用模式“John.Smith”之類的東西,但不是匹配JohnSmith*之間的任何內容,我想匹配單詞之間的任何內容,只要它的 X 個字元長度或更短。

例如,如果 X = 5:

應該匹配的行:

- John Smith
- Jonh F. Smith

不應該匹配的行:

- John Ferdinand Smith
- Joe Brown; John Johson; Mary Smith

我怎麼能用 grep 做到這一點?

嘗試使用“綁定”。

人正則表達式:

邊界是“{”後跟一個無符號十進制整數,可能後跟“,”,可能後跟另一個無符號十進制整數,總是後跟“}”。整數必須介於 0 和 RE_DUP_MAX (255(!)) 之間,包括…

grep -E "John.{0,5}Smith" file
John Smith
John F. Smith

0可以省略(編輯:在某些實現中):

grep -E "John.{,5}Smith" file

我會使用以下命令:

grep 'John.\{,5\}Smith'

.適用於任何字元。

\{,5\}最多重複5次。

引用自:https://unix.stackexchange.com/questions/676953