recuo de partes específicas da saída no bash

3

digamos que eu tenha o seguinte script bash que encontra todos os error.logs que fornecem um cabeçalho e depois caem 5 linhas abaixo dele.

#!/bin/bash
for ERR in 'find -name "error.log"';
do
    echo -e "---- LOG: $ERR ----";
    tail -n 5 $ERR;
done;

Eu gostaria que a saída fosse assim:

---- LOG: foo/error.log ----
    [error ....]
    [error ....]
---- LOG: foo/error.log ----
    [error ....]
    [error ....]
---- LOG: foo/error.log ----
    [error ....]
    [error ....]

em que a seção tail 'd é recuada em alguma quantidade de caracteres (por exemplo, 4 ou qualquer caractere de tabulação)

Como eu recuaria essa seção específica de saída?

    
por tester 24.02.2012 / 19:24

2 respostas

8

Canalize seu comando tail através do sed:

tail -n 5 $ERR | sed -e 's/^/    /'
    
por 24.02.2012 / 19:34
2

Existem muitas maneiras. Pode-se simplesmente canalizar através do sed ou awk e adicionar algum espaço.

cat syslog | sed -e 's/^/    /'
#
cat syslog | sed -e 's/^/\t/'
    
por 24.02.2012 / 19:33

Tags