[abcde]{3}
corresponde a três caracteres consecutivos no conjunto abcde
. Então você está procurando por linhas contendo um, três, cinco ou sete caracteres consecutivos nesse conjunto, o que equivale a procurar por linhas com um desses caracteres.
Para procurar letras gregas, o primeiro passo é ter um padrão compatível com letras gregas, não com letras latinas. Para procurar linhas que contenham pelo menos 13 letras gregas, procure por 13 ocorrências do padrão “uma letra grega seguida por algumas outras coisas”. Aqui está um padrão que procura somente letras gregas sem letras minúsculas:
<greek.txt grep -E '([αβγδεζηθικλμνξοπρςστυφχψω].*){13}'
Se você quiser linhas que contenham exatamente 13 letras minúsculas gregas sem adornos (mais algumas outras coisas que não sejam luGl), filtre os resultados para eliminar linhas contendo 14 luGl.
<greek.txt grep -E '([αβγδεζηθικλμνξοπρςστυφχψω].*){13}' |
grep -v -E '([αβγδεζηθικλμνξοπρςστυφχψω].*){14}'
Se você quiser linhas que contenham exatamente 13 luGl e nenhum outro caractere:
<greek.txt grep -x -E '[αβγδεζηθικλμνξοπρςστυφχψω]{13}'
Agora, se você quiser um número par de consoantes, procure linhas que consistam em “algo que não contenha nenhuma consoante seguida por um número par de (uma consoante seguida por algo que não contenha nenhuma consoante)”. Para um número ímpar, adicione outra ocorrência desse último subpadrão.
cons="βγδζθκλμνξπρςστφχψω"
<greek.txt grep -E "^[^$cons]*([$cons][^$cons]*[$cons][^$cons]*)*[$cons][^$cons]"
Em Perl, você pode combinar uma letra grega com o padrão \p{Greek}
e uma letra minúscula em qualquer alfabeto com o padrão \p{Ll}
. Para procurar uma letra grega minúscula, procure por (?=\p{Ll})\p{Greek}
. Você deve executar seu script na semântica Unicode; A maneira mais fácil de fazer isso é executá-lo com a opção -C
. () = m/REGEXP/g
é uma expressão idiomática do Perl para contar o número de correspondências.
<greek.txt perl -C -l -ne 'print if (() = m/(?:(?=\p{Ll})\p{Greek})/g) == 13'
Não há uma maneira integrada de corresponder às vogais gregas, portanto, uma solução Perl para a segunda parte do seu problema terá que combiná-las explicitamente.