すべてのコレクションを含む単語をファイル内で順番に検索します。

すべてのコレクションを含む単語をファイル内で順番に検索します。

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

おすすめ記事