Seu problema é (IMHO) melhor resolvido com awk
, mas vou apenas apontar um problema com seu comando
grep -E '^.{10}$'| grep 'a*.e*.i*.o*.u*' words2.txt
Para filtrar o conteúdo do arquivo word2.txt
por meio de ambas as invocações de grep
, isso deve se parecer com
grep -E '^.{10}$' words2.txt | grep 'a*.e*.i*.o*.u*'
O segundo padrão grep
deve ser [auoie]{3}
, o que nos leva a
grep -E '^.{10}$' words2.txt | grep -E '[aouie]{3}'
A entrada para o primeiro grep
é seu arquivo. A entrada para o segundo grep
é a saída do primeiro grep
, não do seu arquivo.
Usando um POSIX awk
(como versões recentes do GNU awk
):
$ awk 'length == 10 && /[aouei]{3}/' words2.txt
unpervious
unplebeian
unportuous
unprecious
unquailing
unqueening
unquieting
unquietude
mawk
, BSD awk
e implementações pré-POSIX históricas de awk
não suportam {n}
em expressões regulares como apontado por Stéphane Chazelas .