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

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

我有一个很大的字典文件,其中包含 300,000 多个单词,我试图按此顺序查找所有带有元音 aeiou 的单词,但只有 5 个元音。我目前的尝试似乎不起作用,我一生都不明白为什么。

less mywords | grep -iE [^aeiou]*a[^aeiou]*e[^aeiou]*i[^aeiou]*o[^aeiou]*u[^aeiou]*

我认为它包含了我正在寻找的所有单词,但有一些单词突然出现,我无法摆脱。

abstemiousnesses
ultraserious

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

答案1

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

添加 ^ 和 $ 可以防止这种情况发生。

$ 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]*$'

相关内容