No Linux, como truncar a saída da linha de comando?

56

Se eu grep -nr sumthin * no meu diretório de código-fonte, ele também envia linhas muito longas a partir de arquivos CSS ou JavaScript minificados. Eu quero apenas os primeiros 80 caracteres por linha.

Por exemplo, um grep normal me dá isso:

css/style.css:21:   behavior: url("css/iepngfix.htc")
css/style-min.css:4:.arrow1{cursor:pointer;position:absolute;left:5px;bottom:10px;z-index:13;}.arrow2{cursor:pointer;position:absolute;right:5px;bottom:10px;z-index:13;}.calendarModule{z-index:100;}.calendarFooterContainer{height:25px;text-align:center;width:100%!important;z-index:15;position:relative;font-size:15px!important;padding:-2px 0 3px 0;clear:both!important;border-left:1px solid #CCC;border-right:1px  ... etc.

mas gostaria de obter apenas isto:

css/style.css:21:   behavior: url("css/iepngfix.htc")
css/style-min.css:4:.arrow1{cursor:pointer;position:absolute;left:5px;bottom:

O comando Linux pode fazer isso?

    
por Nikki Erwin Ramirez 06.09.2011 / 08:33

3 respostas

79

OMG, eu esqueci completamente sobre cut !

grep -nr sumthin * | cut -c -80

^ faz o truque! > _ <

    
por 06.09.2011 / 08:38
5

Diferente de cut , você pode usar fold (e, em alguns casos, fmt ).
fold é parte de coreutils package.

$ echo "some very long long long text" | fold -w 5   # fold on 5 chars per line
some 
very 
long 
long 
long 
text

fold não corta o texto restante, mas transmite na próxima linha.

    
por 07.09.2011 / 19:16
1

Embora não seja exatamente o que você deseja fazer, você pode usar awk para imprimir um determinado número de colunas. Você pode especificar o delimitador para ser ":" neste caso.

    
por 06.09.2011 / 10:55