Recolha linhas longas de saída no terminal

1

Eu geralmente tenho linhas muito longas de saída de terminal sem \ ns que raramente são úteis e atrapalham a localização da saída desejada (por exemplo, logs de erros ou arquivos minificados que são correspondidos por ack). Existe uma ferramenta que possa colapsar linhas tão longas? Para mim, o ideal seria provavelmente uma indicação na sarjeta de que uma linha foi colapsada, que poderia ser clicada para expandir se eu quiser ver a linha completa. Estou usando o OS X Terminal, mas estou feliz em mudar para outra ferramenta, se ela fornecer isso. Uma solução alternativa que retira linhas após a largura do terminal para a qual eu poderia canalizar minha saída também seria útil.

    
por timbrell 03.10.2014 / 13:00

1 resposta

0

Aqui estão algumas soluções simples. Para simplesmente truncar linhas com mais de 80 caracteres, escreva um script contendo

#!/bin/sh
expand "$@" | cut -c1-80

e canalize seu programa para ele. Uma abordagem um pouco mais sofisticada é

#!/bin/sh
expand "$@" | awk '{ if (length <= 80) print; else print substr($0,1,77) "...";}'

Isso adiciona ... como marcador quando descarta dados. Ele fornece apenas os primeiros 77 caracteres, então o ... em si não ultrapassa a margem.

O comando expand é usado para expandir tabulações para espaços, porque os comandos cut e awk estão simplesmente contando caracteres, e não perceberia que uma linha contendo mais de dez guias é muito longa.

    
por 04.10.2014 / 01:15