如何使用 grep 查找任何单词出现 3 次的行?

doe*_*247 5 grep regular-expression

我想找到包含任何单词的行三遍。为此,我认为最好使用该grep命令。

这是我的尝试。

grep '\(.*\)\{3\}' myfile.txt
Run Code Online (Sandbox Code Playgroud)

Qua*_*odo 13

使用标准词定义,





阅读材料


uml*_*ute 9

像这样?

egrep '(\<.+\>).+\<\1\>.+\<\1\>'
Run Code Online (Sandbox Code Playgroud)
  • egrep(或grep -E)启用反向引用所需的扩展正则表达式
  • \<.+\> 将匹配至少 1 个字符的任何单词
    • \<resp\>匹配单词边界(在您的尝试中,您根本没有考虑单词边界)
    • .+匹配一个或多个字符的序列(在您的尝试中,您使用.*了匹配零个或多个字符的序列!)
  • 使用反向引用,检查匹配的序列是否出现第二次 ( \1) 和第三次 (\1再次)。
    • 我们允许.+匹配之间有一个或多个字符 ( ) 的任何序列,因此“foo bar foo dorbs foo godly”将匹配(单词“foo”出现 3 次)。
    • 如果您只想匹配相邻的单词(例如“foo foo foo”),请改用类似的内容[[:space:]]+

  • 非常好!由于 `\&lt;\&gt;`,它不符合 POSIX,但 BSD Grep 和 GNU Grep 都理解它们。 (3认同)