Mirando los registros de abajo hacia arriba


35

¿Hay un comando de Linux o alguna forma de ver los registros de abajo hacia arriba en lugar de de arriba hacia abajo? Lo sé tail -n <number of lines>, pero ¿hay algo que realmente pueda desplazar e ir de abajo hacia arriba?

Respuestas:


32

Algunos sistemas tienen tac, que es un nombre caprichosamente al revés cat. Sin eso, aún puedes hacer algo como

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

8
+1 para tac, no sabía sobre eso :)
Johan

cat -nes un awk '{print NR,$0}'poco más ligero.
Glenn Jackman

1
Yo estaba asumiendo que los sistemas sin tacpoder también carecen de la versión BSD derivado de cat(USG con sabor catno tengo -v, -netc. Creo que algo desencadenó mi "viejo ****".)
geekosaur

44

Creo que less +Ges lo que está buscando: cargará el archivo al final y puede usar la flecha hacia arriba (o k) para desplazarse hacia atrás. Dentro del visor, glo llevará a la parte superior del archivo y Glo llevará de regreso al final. Y Fse desplazará hasta el final e intentará seguir leyendo, como tail -f.


n1 +1 :) Si serás tan amable: ¿Puedes explicar cómo buscar el archivo de abajo hacia arriba cuando usas menos con la bandera + G?
Oleg Belousov

2
@OlegTikhonov Claro. ?se usa para buscar hacia atrás en el archivo.
mattdm

5

El taccomando es como un "gato" inverso, si eso es lo que buscas.

Si solo desea ver un archivo comenzando desde abajo, ¿por qué no utiliza un editor o "menos"?


1
Dos problemas que veo con el uso de editores son los paginadores: a) no todos los editores se comportan correctamente a las desconexiones de la red, lo que significa que el editor permanece incluso cuando el shell envía SIGHUP; b) muchos editores tocan el directorio (creando un archivo swap / temp), lo cual es desventajoso si desea mantener estable el tiempo m del directorio.
Arcege

2

Puede ejecutar lessy luego usar M-> (esa es la meta clave, generalmente alt, y el '>' al mismo tiempo) para ir al final del archivo. lessSoporta desplazamiento.


1
La función "ir a la última línea" también suele estar vinculada a >(sin Meta o ESC) y G.
Chris Johnsen

@ Chris, no me di cuenta de que Meta no era necesario en menos. Pero eso es lo que usarías en Emacs.
Carlos Rendon


0

Yo uso este script para leer un archivo de abajo hacia arriba


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

si sample.filecontiene

 1
 2
 3

el resultado elpmas.fileserá

 3
 2
 1

-1

La canalización en tac también funciona, por ejemplo:

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

-1

Solucion: Combinar tacconless

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.