Excluir linhas longas dos resultados do grep

Excluir linhas longas dos resultados do grep

Como excluo linhas muito longas dos grepresultados?

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 grepexcluir 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 grepem algo não necessariamente eliminará as cores. Esse comportamento resulta de --color=auto(que, se você verificar, alias grepprovavelmente é o que você está usando). Você pode substituí-lo e passar --color=alwayse greppreservará 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, cutcomo 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 grepinvocaçã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=alwayssinalizador 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.

Fonte:https://unix.stackexchange.com/a/113507/48906

informação relacionada