Se você quiser encontrar exatamente duas instâncias em qualquer lugar em uma palavra, será necessário permitir sequências arbitrárias não correspondentes antes, entre e depois dos caracteres correspondentes.
por exemplo. para encontrar palavras inteiras que consistem em exatamente 2 instâncias da letra q
, sem diferenciação de maiúsculas e minúsculas, em /usr/share/dict/words
:
$ grep -wi '[^q]*q[^q]*q[^q]*' /usr/share/dict/words
Albuquerque
Albuquerque's
Qiqihar
Qiqihar's
Se você não estiver limitado a grep
especificamente, convém considerar o uso de perl
, onde é possível usar o fato de que, quando avaliado em um contexto escalar, o comando tr
retorna o número de transliterações, por exemplo,
perl -ne 'print if tr/qQ/qQ/ == 2' /usr/share/dict/words
Em uma veia similar, com o GNU awk, você poderia definir o caractere de interesse como o padrão de campo e testar o número de campos:
gawk -vFPAT='[qQ]' 'NF==2' /usr/share/dict/words