Dificuldade em fazer uma expressão regular para encontrar pelo menos 2 ocorrências de um caractere em um arquivo

1

Eu tenho um arquivo contendo códigos aleatórios. Cada código tem dez caracteres e estou tentando codificar no arquivo que tem pelo menos duas ocorrências de um caractere. Eu estou fazendo isso:

grep DD* [filename]

Isto encontra códigos com 2 ocorrências do caractere 'D', mas também mostra códigos que possuem apenas 1 ocorrência de 'D'. Como posso alterar minha expressão regular para mostrar apenas códigos com duas ocorrências?

    
por user1163073 30.01.2012 / 12:51

1 resposta

8

* em uma expressão regular é um quantificador que significa que a entidade anterior repetiu 0 ou mais vezes.

Basta remover o quantificador:

grep DD filename

Observe que o acima também corresponderá às linhas com 3 ou mais ocorrências de "D".

Caso você queira qualquer caractere, não apenas "D", 2 ou mais vezes:

grep -E '(.)' filename

Se você quiser "D" exatamente 2 vezes:

grep -E '([^D]|^)DD([^D]|$)' filename
    
por 30.01.2012 / 12:58