Precisa de uma mão com grep + regex [duplicate]

2

Eu preciso encontrar um conjunto de palavras que contenham vogais que ocorram na ordem mais recente. Não é necessário ocorrer consecutivamente. Permitindo também que cada vogal ocorra várias vezes antes da ocorrência da próxima, mas nunca mais ocorrendo após a ocorrência da vogal seguinte

lista de entradas básicas - link

até agora eu usei esses regex

grep 'a[^eiou]*e[^aiou]*i[^aeou]*o[^aeiu]*u[^aeio]*' words2.txt - this is the closest one that I got

grep 'a[^e^i^o^u]*e[^a^i^o^u]*i[^a^e^o^u]*o[^a^e^i^u]*u[^a^e^i^o]*' words2.txt

grep 'a.*e[^a]*i[^ae]*o[^aei]*u[^aeio]*' words2.txt 

E algumas saídas do primeiro -

appenditious,appetitious,arenicolous,arreptitious,arsenious

....

ultraexpeditious,ultrareligious,unfacetious

a maioria dos meus resultados satisfará as condições, mas alguns deles não são. por exemplo. - ultraexpeditious porque quando u ocorre depois disso, não pode haver qualquer vogal na palavra.

    
por Batman 27.04.2017 / 15:08

1 resposta

3

Você precisa ancorar sua pesquisa (ou use -x ):

grep -x '[^aeiou]*a[^eiou]*e[^aiou]*i[^aeou]*o[^aeiu]*u[^aeio]*'

ultraexpeditious corresponde porque contém aexpeditious , que corresponde ao seu regexp.

    
por 27.04.2017 / 15:23