Recupere registros de las últimas 100 líneas


164

Necesito recuperar las últimas 100 líneas de registros del archivo de registro. Probé el comando sed

sed -n -e '100,$p' logfilename

Avíseme cómo puedo cambiar este comando para recuperar específicamente las últimas 100 líneas.


Esto se menciona en el manual: gnu.org/software/sed/manual/html_node/tail.html#tail , cómo sed puede emular la cola.
Lars Fischer

1
tail -f -n 100 logfilename
Amitesh Bharti

Respuestas:


302

Puede usar el comando de cola de la siguiente manera:

tail -100 <log file>   > newLogfile

Ahora las últimas 100 líneas estarán presentes en newLogfile

EDITAR:

Las versiones más recientes de tail mencionadas por twalberg usan el comando:

tail -n 100 <log file>   > newLogfile

17
Tenga en cuenta que algunas versiones más recientes de tailrequieren la sintaxis tail -n 100 <filename>...
twalberg

14

Mire, el script sed que imprime las 100 últimas líneas que puede encontrar en la documentación de sed ( https://www.gnu.org/software/sed/manual/sed.html#tail ):

$ cat sed.cmd
1! {; H; g; }
1,100 !s/[^\n]*\n//
$p

$ sed -nf sed.cmd logfilename

Para mí es mucho más difícil que tu guión, así que

tail -n 100 logfilename

Es mucho más simple. Y es bastante eficiente, no leerá todos los archivos si no es necesario. Vea mi respuesta con el informe de strace para tail ./huge-file: /unix/102905/does-tail-read-the-whole-file/102910#102910


13

"tail" es un comando para mostrar la última parte de un archivo, el uso de los interruptores disponibles adecuados nos ayuda a obtener resultados más específicos. el modificador más utilizado para mí es -n y -f

SINOPSIS

cola [-F | -f | -r] [-q] [-b número | -c número | -n número] [archivo ...]

aquí

-n número: la ubicación son líneas numéricas.

-f: la opción -f hace que la cola no se detenga cuando se alcanza el final del archivo, sino que espera a que se agreguen datos adicionales a la entrada. La opción -f se ignora si la entrada estándar es una tubería, pero no si es una FIFO.

Recupere registros de las últimas 100 líneas

To get last static 100 lines  
     tail -n 100 <file path>

To get real time last 100 lines
     tail -f -n 100 <file path>

3

Sé que esto es muy antiguo, pero para quien sea que ayude.

less +F my_log_file.log

eso es básico, con menos puedes hacer cosas mucho más poderosas. una vez que comience a ver los registros, puede buscar, ir al número de línea, buscar el patrón, mucho más, además es más rápido para archivos grandes.

es como vim para registros [totalmente mi opinión]

documentación original de menos: https://linux.die.net/man/1/less

menos hoja de trucos: https://gist.github.com/glnds/8862214


1
len=`cat filename | wc -l`
len=$(( $len + 1 ))
l=$(( $len - 99 ))
sed -n "${l},${len}p" filename

la primera línea toma la longitud (líneas totales) del archivo, luego +1 en las líneas totales después de eso, tenemos que capturar 100 registros, entonces, -99 de la longitud total, simplemente coloca las variables en el comando sed para obtener las últimas 100 líneas del archivo

Espero que esto ayude.

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.