Grep e expressões regulares (letras consecutivas)

1

Estou tentando descobrir como listar letras consecutivas no grep. Por exemplo, se eu quisesse listar todas as palavras com dois a consecutivos OU i's OU em uma linha, como eu faria isso?

Pelo que entendi, o comando seria parecido com egrep [a] {2} | egrep [i] {2} | egrep [u] {2}

Mas e se for o caso de a palavra ter aa e ii ou qualquer outra combinação das três letras consecutivamente por dois?

    
por 에이바 08.09.2010 / 18:24

2 respostas

4

O que você tem em sua pergunta são, na verdade, três comandos separados: ele procura por qualquer coisa que tenha aa e passa esses resultados para o próximo egrep , que pesquisa qualquer coisa que tenha ii passa esses resultados para o último egrep que procura por uu . Então você acaba com apenas as linhas que contêm todas as três combinações aa , ii , e uu .

Você precisaria usar apenas o comando one egrep , usando uma expressão regular com alternância:

egrep 'aa|ii|uu'

Isso corresponderá a todas as linhas que contiverem aa , ii ou uu .

    
por 08.09.2010 / 18:57
1

Você não pode. Regex só funciona com expressões regulares. Você notará que as expressões regulares não possuem nenhum tipo de memória (portanto, não podemos dizer (. *) * 2 ou algo assim). Você está procurando por uma atomita finita ou uma máquina turring.

    
por 08.09.2010 / 18:27

Tags