从文件中按顺序查找包含所有元音的单词

Ach*_*ldo 6 grep regular-expression

我有一个包含 300,000 多个单词的大词典文件,我试图按该顺序查找所有带有元音 aeiou 的单词,并且只有 5 个元音。我目前的尝试似乎没有奏效,对于我的一生,我不明白为什么。

less mywords | grep -iE [^aeiou]*a[^aeiou]*e[^aeiou]*i[^aeiou]*o[^aeiou]*u[^aeiou]*
Run Code Online (Sandbox Code Playgroud)

我认为它得到了我正在寻找的所有单词,但是弹出了一些我无法摆脱的单词。

abstemiousnesses
ultraserious
Run Code Online (Sandbox Code Playgroud)

还有一些其他的,但它们的脉络相同。奇怪的是,即使我[^u]*在前面添加类似的东西也会ultraserious不断弹出!任何解决方案都可以,但我希望它仅限于 grep,因为我们被告知只能使用 grep 来完成。

Bow*_*Red 13

你没有锚定表达式。它可以在中间匹配,因此允许匹配“外部”的任何元音。

添加 ^ 和 $ 以防止出现这种情况。

$ echo abstemiousnesses | grep -iE '[^aeiou]*a[^aeiou]*e[^aeiou]*i[^aeiou]*o[^aeiou]*u[^aeiou]*'
abstemiousnesses
$ echo abstemiousnesses | grep -iE '^[^aeiou]*a[^aeiou]*e[^aeiou]*i[^aeiou]*o[^aeiou]*u[^aeiou]*$'
Run Code Online (Sandbox Code Playgroud)