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
あなたは表現を固定しません。途中で一致できるため、「outside」と一致するすべてのコレクションが許可されます。
^ と $ を追加すると、これは発生しません。
$ 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]*$'