Ignorar linhas contendo uma letra maiúscula

0

Por que o seguinte comando ainda retorna algumas linhas contendo uma letra maiúscula?

aspell dump master | grep ozz | grep -v '[^A-Z]'
    
por Steven 18.12.2013 / 22:24

3 respostas

9
grep -v '[^A-Z]'

remove ( -v ) as linhas que contêm um caractere diferente dos caracteres de A a Z.

Você provavelmente quer:

grep -v '[[:upper:]]'

para remover as linhas com pelo menos uma letra maiúscula ou:

LC_ALL=C grep -v '[A-Z]'

para remover as linhas com pelo menos um dos 26 caracteres ASCII entre A e Z .

    
por 18.12.2013 / 22:30
2

Primeiro, você está invertendo uma inversão, o que não é o que você quer. O que você está procurando é mais assim:

aspell dump master | grep ozz | grep '^[^A-Z]*$'

Explicado

Você está combinando com caracteres individuais. Você precisa combinar em mais do que apenas 1 (se você quiser selecionar apenas linhas que não tenham limites). Então, adicionamos o asterisco (*) ao final. Isso significa que estou procurando por linhas que tenham 0 ou mais letras não maiúsculas. Adicionamos o cursor (^) à frente e o sinal de dólar ($) ao final para denotar, do início da linha até o final da linha. Então, isso pode ser lido como, desde o início da linha até o final da linha, 0 ou mais caracteres que não contenham nenhum caractere de A-Z.

Espero que isso tenha ajudado.

    
por 18.12.2013 / 22:30
1

Para remover apenas as linhas que começam com uma letra maiúscula:

aspell dump master | grep ozz | grep -v '^[[:upper:]]'
    
por 18.12.2013 / 22:34