Grep,找到最少 x 个单词的行

qui*_*n16 3 linux grep awk find

有没有办法找到所有包含至少x 个单词的grep 行?

ter*_*don 7

好吧,假设单词用空格分隔,要查找 >= 5 个单词的行,请执行以下操作:

$ grep -P '\w+\s+\w+\s+\w+\s+\w+\s+\w+'
Run Code Online (Sandbox Code Playgroud)

不过,Grep 不是这项工作的最佳工具,试试 gawk:

$ gawk 'NF>4'
Run Code Online (Sandbox Code Playgroud)

Gawk 的 NF 变量保存字段的数量,默认情况下,字段由空格定义,因此在一行文本中,每个字段都是一个单词。上面的命令将打印包含超过 4 个单词的所有行。

  • 但是单词也可以用逗号分隔。并且在句末有点。我试试这个: grep -E "(\w+[ ,.]+){25,}" 并且它似乎工作正常。 (2认同)