Como excluo linhas muito longas dos grep
resultados?
Costumo navegar por vários arquivos .js ( -r
) e alguns deles são compilados, portanto, consistem em uma única linha, geralmente com alguns milhares de caracteres. Com toda essa confusão, acho difícil ver os resultados do restante dos arquivos.
O que devo passar para grep
excluir linhas com, digamos, mais de 1000 caracteres?
Eu preferiria não ter que canalizar o resultado através de outro grep, pois isso me faria perder as cores da saída, ou ter que adicionar o primeiro grep no final do pipe novamente para recuperar as cores.
Responder1
Colocar algo grep
em 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 cano.
No que diz respeito à exclusão das linhas, você pode usar qualquer ferramenta que desejar (por exemplo, cut
como Amazed mencionou). 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á uma maneira óbvia de (pelo menos para mim) fazer isso na mesma grep
invocação.
Responder2
O comando a seguir deve atingir o que você deseja, ou seja, não gerar linhas correspondentes cujo comprimento seja superior a 1000 caracteres:
grep -r --color=always $pattern . | cut -c1-1000
O --color=always
sinalizador garante que as sequências de escape de cores serão geradas pelo grep.
O valor padrão desta opção é --color=auto
, o que torna grep color sua saída somente se for passado para um terminal interativo e não usa cores quando é canalizado para outro comando.