计算至少有 2 个相同连续字母的单词数 BASH

Count number of words that have at least 2 same consecutive letters BASH

我试着计算至少有 2 个连续字母相同的单词数,

我尝试使用 grep 命令,首先我使用 tr 命令让每个单词显示在一个新行中,之后,我使用 grep 来匹配模式,

tr ' ' '' | grep -c '\(.*\).'

但这给了我所有单词的数量 当我在没有 -c 选项的情况下使用相同的命令时 grep 我只看到那些匹配的单词中的字母以红色突出显示,如下所示:

https://i.stack.imgur.com/Vfjys.png 我也尝试使用: tr ' ' '' | '\(.*\).' | wc -l 得到 24 而不是 5。

给定此输入文本 lorem-ipsum.txt:

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

与上面相同的文本,突出显示了双字母:

Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor incididunt ut labore et dolore magna aliquaUt enim ad minim veniam quis nostrud exercitation (1) ullamco laboris nisi ut aliquip ex ea (2) commodo consequatDuis aute irure dolor in reprehenderit in voluptate velit (3) esse (4) cillum dolore eu fugiat (5) nulla pariaturExcepteur sint (6) occaecat cupidatat non proident sunt in culpa qui (7) officia deserunt (8) mollit anim id est laborum

您计算包含连续双字母的单词数:

tr -c '[:alpha:]' '\n' < lorem-ipsum.txt | grep -c '\(.\)'
  • tr -c '[:alpha:]' '\n':将非字母字符转换为换行符,因此每个单词在流中各占一行。
  • grep -c '\(.\)':计算任何捕获字符 \(.\) 后跟自身 </code>.</li> 的出现次数 </ul> <p>测试断言:</p> <pre><code>[ 8 -eq "$(tr -c '[:alpha:]' '\n' < lorem-ipsum.txt | grep -c '\(.\)')" ]