Olhando para logs de baixo para cima

35

Existe um comando linux ou alguma maneira de examinar os logs de baixo para cima em vez de de cima para baixo. Eu sei tail -n <number of lines>, mas há algo que eu possa realmente rolar e ir de baixo para cima?

c0mrade
fonte

Respostas:

32

Alguns sistemas possuem tac, que é um caprichosamente nomeado para trás cat. Sem isso, você ainda pode fazer algo como

awk '{print NR ":" $0}' $file | sort -t: -k 1nr,1 | sed 's/^[0-9][0-9]*://'
geekosaur
fonte
8
+1 para tac, não sabia sobre isso :)
Johan
cat -né awk '{print NR,$0}'um pouco mais leve.
Glenn Jackman
11
Eu estava assumindo que sistemas sem tacpoder também não têm a versão derivados de BSD do cat(USG com sabor catnão tinha -v, -netc. Eu acho que algo despertou o meu "velho ****".)
geekosaur
44

Eu acho less +Gque é o que você está procurando - ele carregará o arquivo no final e você poderá usar a seta para cima (ou k) para rolar para trás. No visualizador, gvocê será levado ao topo do arquivo e Go levará de volta ao final. E Fvai rolar até o fim e tentar continuar lendo, como tail -f.

mattdm
fonte
n1 +1 :) Se você for gentil: Você pode explicar como pesquisar o arquivo de baixo para cima ao usar menos com o sinalizador + G?
Oleg Belousov 22/01
2
@OlegTikhonov Claro. ?é usado para pesquisar no arquivo para trás.
mattdm
5

O taccomando é como um "gato" reverso, se é isso que você procura.

Se você deseja apenas visualizar um arquivo começando na parte inferior, por que não usa um editor ou "menos"?

Glenn Jackman
fonte
11
Dois problemas que vejo ao usar editores são os paginadores: a) nem todos os editores se comportam adequadamente com desconexões de rede, o que significa que o editor permanece por perto mesmo quando o shell envia SIGHUP; b) muitos editores tocam no diretório (criando um arquivo swap / temp), o que é desvantajoso se você deseja manter estável o tempo de funcionamento do diretório.
Arcege 7/03/11
2

Você pode executar lesse usar M-> (que é a meta-chave, geralmente alt, e o '>' ao mesmo tempo) para ir para a parte inferior do arquivo. lesssuporta rolagem.

Carlos Rendon
fonte
11
A função "ir para a última linha" também é normalmente vinculada a >(sem Meta ou ESC) e G.
31711 Chris Chrissen
@ Chris, eu não sabia que o Meta não era necessário em menos. Mas é isso que você usaria no Emacs.
Carlos Rendon
0

Eu uso esse script para ler um arquivo de baixo para cima


#!/bin/bash

echo -n elpmas.file # resulting file

ctr_line=0

while read line; do

   let ctr_line++

   tail -n $ctr_line | head -n 1 >> elpmas.file

done <sample.file

se sample.filecontém

 1
 2
 3

o resultado elpmas.fileserá

 3
 2
 1
Jato
fonte
-1

A tubulação no tac também funciona, por exemplo:

tail -n 3 /var/log/dmesg | tac
marc
fonte
-1

Solução: Combine taccomless

tac $@ | less

Instalar

sudo bash -c 'echo "tac \$@ | less" > /usr/local/bin/tacless'
sudo chmod +x /usr/local/bin/tacless

Uso

tacless /var/log/auth.log
nsantana
fonte