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?

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]*://'

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.


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"?


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.


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

-1

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

tail -n 3 /var/log/dmesg | tac

-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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.