모음이 모두 포함된 단어를 파일에서 순서대로 찾아보세요.

모음이 모두 포함된 단어를 파일에서 순서대로 찾아보세요.

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

관련 정보