Como “grep” para comprimento de linha * não * em um determinado intervalo?

16

NOTA: Esta questão é o complemento deste Q & A: Como" grep "para comprimento de linha em um determinado intervalo?

Como podemos grep para linhas que tenham menos de 8 ou mais de 63 caracteres, nenhuma que contenha mais de oito e menos de 63 caracteres?

Assim, algumas contagens aceitáveis de caracteres podem ser ...

7 6 5 4 3 2 1 0

... e ...

64 65 66 67 ...
    
por LoukiosValentine79 14.12.2015 / 09:38

1 resposta

38
grep -xv '.\{8,63\}' <input >output
O interruptor grep do -x denota uma correspondência linha inteira - o que significa que qualquer padrão correspondido deve definir uma linha da cabeça à cauda. fazendo ...

grep -x pattern

... é geralmente equivalente a ...

grep ^pattern$
A opção grep do% p_de -v nega a influência de um padrão na seleção de linha. geralmente fazendo ...

grep pattern

... só selecionará linhas que correspondam ao padrão, mas com um padrão -v negado, somente as linhas que não corresponderem serão selecionadas.

... e assim ...

grep -xv '.\{8,63\}'

... corresponde a todas as linhas que consistem da cabeça à cauda de qualquer lugar entre 8 e 63 caracteres, e a seleção -v negada faz com que grep apenas imprima todo o resto.

    
por 14.12.2015 / 09:52