Usando o egrep para encontrar linhas com 5-6 letras maiúsculas. (mas não mais de 6)

1
Primeiro, esta é a lição de casa e, infelizmente, eu tenho que usar egrep (e não com -w ou qualquer coisa assim).

Eu preciso do meu grep para retornar linhas que tenham exatamente 5 ou 6 letras maiúsculas.

Fazer egrep [A-Z]{5,6} .filename retorna palavras de 5 e 6 letras, mas também, infelizmente, também mais palavras com letras do que isso.

Então, por exemplo, nesta lista:

ASK
roger ROBERT gulliver
tom THOMAS
JONATHAN moore
MELISSA tenant

Preciso que ele retorne apenas ROBERT e THOMAS.

    
por roger34 24.03.2011 / 21:27

3 respostas

3
egrep "^[^A-Z]*[A-Z]{5,6}[^A-Z]*$" .filename
    
por 24.03.2011 / 21:35
2

Experimente:

egrep '^[A-Z]{5,6}$'

em que ^ e $ correspondem ao início e ao final da linha, respectivamente.

    
por 24.03.2011 / 21:44
0

Ainda outra versão

a) limitado a 5 ou 6 casos superiores na palavra;

b) a palavra pode ter letras minúsculas ilimitadas, mais o '-' e o apóstrofo: '

c) usa o caractere de borda da palavra \ b (largura zero);

Isto encontra mais do que a sua lista (que você gostaria) e segue todas as limitações que você declara. Isso pode resultar em mais do que você esperava, pois também permite o número de letras minúsculas entre as letras maiúsculas:

"\b[a-z'-]([A-Z][a-z'-]){5,6}\b"

Encontrará: impressionante JET-LI

Jane DeSILVA

Mas não: old MacDONALD

    
por 29.03.2011 / 03:49