Exclui linhas longas dos resultados do grep

2

Como excluo linhas muito longas dos resultados grep ?

Freqüentemente, percorro muitos arquivos .js ( -r ) e alguns deles são compilados, então eles consistem em uma única linha geralmente com um par de mil caracteres. De toda essa desordem, acho difícil ver os resultados do resto dos arquivos.

O que devo passar para grep para excluir linhas com, digamos, mais de 1000 caracteres?

Eu prefiro não ter que canalizar o resultado através de outro grep, pois isso me faria perder cores da saída, ou ter que adicionar o primeiro grep no final do pipe novamente para recuperar as cores.

    
por Attila O. 04.02.2012 / 03:05

2 respostas

3

Pipar o grep para algo não necessariamente eliminará as cores. Esse comportamento resulta de --color=auto (que, se você verificar alias grep , é provavelmente o que você está usando). Você pode substituí-lo e passar --color=always e grep preservará as cores mesmo através de um tubo.

No que diz respeito à exclusão das linhas, você pode canalizar para qualquer ferramenta que desejar (por exemplo, cut como espantado). Tenha em mente que as cores do grep irão inserir bytes extras nas linhas correspondentes, se isso for importante para você. Não há nenhuma maneira óbvia de (para mim de qualquer maneira) fazê-lo na mesma invocação de grep .

    
por 04.02.2012 / 08:25
1

O comando a seguir deve atingir o que você deseja, ou seja, não exibe linhas correspondentes cujo comprimento seja maior que 1000 caracteres:

grep -r --color=always $pattern . | cut -c1-1000

O --color=always sinalizador garante que as seqüências de escape de cores serão geradas pelo grep.

Este valor padrão da opção é --color=auto , que faz com que a cor grep seja impressa apenas se for passada para um terminal interativo e não usar cores quando for canalizada para outro comando.

Fonte: link

    
por 22.07.2014 / 18:31

Tags