Guardando i registri dal basso verso l'alto


35

Esiste un comando linux o un modo per guardare i registri dal basso verso l'alto piuttosto che dall'alto verso il basso. Lo so tail -n <number of lines>, ma c'è qualcosa che posso davvero scorrere e andare dal basso verso l'alto?

Risposte:


32

Alcuni sistemi hanno tac, che è un nome stravagante all'indietro cat. Senza quello, puoi ancora fare qualcosa del genere

awk '{print NR ":" $0}' $file | sort -t: -k 1nr,1 | sed 's/^[0-9][0-9]*://'

8
+1 per tac, non lo sapevo :)
Johan

cat -nè come awk '{print NR,$0}', quindi leggermente più leggero.
Glenn Jackman,

1
Mi è stato presupposto che i sistemi senza tacpotrebbe mancare anche la versione BSD-derivati di cat(USG-aromatizzato catnon ha avuto -v, -necc penso che qualcosa ha scatenato la mia "vecchia ****".)
geekosaur

44

Penso che less +Gsia quello che stai cercando: caricherà il file alla fine e puoi usare la freccia su (o k) per scorrere indietro. All'interno del visualizzatore, gti porterà all'inizio del file e Gti riporterà alla fine. E Fscorrerà fino alla fine e proverà a continuare a leggere, come tail -f.


n1 +1 :) Se sarai così gentile: puoi spiegare come cercare il file dal basso verso l'alto quando usi meno con + G flag?
Oleg Belousov,

2
@OlegTikhonov Sure. ?è usato per cercare all'indietro nel file.
Mattdm,

5

Il taccomando è come un "gatto" inverso, se è quello che stai cercando.

Se vuoi solo visualizzare un file partendo dal basso, perché non usi un editor o "meno"?


1
Due problemi che vedo nell'uso degli editor sono impaginatori: a) non tutti gli editor si comportano correttamente con le disconnessioni di rete, nel senso che l'editor rimane in giro anche quando la shell invia SIGHUP; b) molti editor toccano la directory (creando un file swap / temp), il che è svantaggioso se si desidera mantenere stabile il mtime della directory.
Arcege,

2

Puoi eseguire lesse quindi usare M-> (che è la meta chiave, di solito alt, e '>' allo stesso tempo) per andare in fondo al file. lesssupporta lo scorrimento.


1
Anche la funzione “vai all'ultima riga” di solito è associata >(senza Meta o ESC) e G.
Chris Johnsen,

@ Chris, non avevo realizzato che Meta non fosse richiesto in meno. Ma è quello che avresti usato in Emacs.
Carlos Rendon,


0

Uso questo script per leggere un file dal basso verso l'alto


#!/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.filecontiene

 1
 2
 3

il risultato elpmas.filesarà

 3
 2
 1

-1

Anche il piping in tac funziona, ad esempio:

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

-1

Soluzione: combinare tacconless

tac $@ | less

Installare

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

uso

tacless /var/log/auth.log
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.