很难制作正则表达式以在文件中找到至少 2 次出现的字符

use*_*073 1 grep regular-expression wildcards

我有一个包含随机代码的文件。每个代码中有 10 个字符,我试图在文件中 grep 代码中至少出现 2 个字符。我正在这样做:

grep DD* [filename]
Run Code Online (Sandbox Code Playgroud)

这将查找出现 2 次字符“D”的代码,但它也显示仅出现 1 次“D”的代码。如何更改我的正则表达式以仅显示出现 2 次的代码?

man*_*ork 8

* 在正则表达式中是一个量词,表示前一个实体重复了 0 次或更多次。

只需删除量词:

grep DD filename
Run Code Online (Sandbox Code Playgroud)

请注意,上述内容还将匹配出现 3 次或更多“D”的行。

如果您想要任何字符,不仅仅是“D”,2 次或更多次:

grep -E '(.)\1' filename
Run Code Online (Sandbox Code Playgroud)

如果你想要“D”正好 2 次:

grep -E '([^D]|^)DD([^D]|$)' filename
Run Code Online (Sandbox Code Playgroud)