Como adiciono linhas novas entre linhas impressas na linha de comando?

25

Os registros de email são incrivelmente difíceis de ler. Como eu poderia produzir uma linha em branco entre cada linha impressa na linha de comando? Por exemplo, digamos que estou usando o log. Dessa forma, várias linhas agrupadas não estão sendo confundidas.

    
por xenoterracide 14.10.2010 / 23:00

5 respostas

44
sed G 
# option: g G    Copy/append hold space to pattern space.

G não é usado com frequência, mas é bom para essa finalidade. sed mantém dois espaços de buffer: o "espaço de padrão" e o "espaço de espera". As linhas processadas por sed geralmente fluem através do espaço padrão, já que vários comandos operam em seu conteúdo ( s/// , p , etc.); o espaço de espera começa vazio e só é usado por alguns comandos.

O comando G acrescenta uma nova linha e o conteúdo do espaço de espera ao espaço de padrão. O programa sed acima nunca coloca nada no espaço de espera, então G anexa efetivamente apenas uma nova linha a cada linha que é processada.

    
por 15.10.2010 / 04:10
8

Use o awk para adicionar uma nova linha extra. Isso também permite filtrar as coisas que você não deseja.

awk '{print $0,"\n"}' | less
    
por 14.10.2010 / 23:28
4

Use sed e substitua a linha inteira por si só, além de um caractere extra de nova linha:

grep foo /var/log/maillog | sed -e "s/^.*$/&1\n/"
    
por 14.10.2010 / 23:03
3

É isso que você procura depois?

grep SPAM mail.log | while read -r line; do echo; echo $line; done

    
por 14.10.2010 / 23:04
0

Se é para mais do que apenas olhar, eu prefiro enviá-los para um arquivo de texto e abrir com um editor de texto para que você possa definir as linhas para quebrar ou não e fazer pesquisas facilmente ... e apague as linhas indesejadas e assim por diante sem ter que digitar muitos comandos.

cat file.log > log.txt e gedit log.txt ou um editor de terminal como o nano

Editar: ou cp file.log log.txt , que é claro, mais fácil e rápido ... graças ao comentário de KeithB

    
por 15.10.2010 / 03:16