Necesito recuperar las últimas 100 líneas de registros del archivo de registro. Probé el comando sed
sed -n -e '100,$p' logfilenameAvíseme cómo puedo cambiar este comando para recuperar específicamente las últimas 100 líneas.
Mira, el script sed que imprime las 100 últimas líneas lo puedes 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 logfilenamePara mí es mucho más difícil que tu guión, así que
tail -n 100 logfilename es mucho mucho más simple. Y es bastante eficiente, no leerá todos los archivos si no es necesario. Vea mi respuesta con el informe strace para tail ./huge-file : https://unix.stackexchange.com/questions/102905/does-tail-read-the-whole-file/102910#102910
"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 interruptor más usado para mí es -n y -f
SINOPSIS
cola [-F | -f | -r] [-q] [-b número | -c número | -n numero] [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 FIFO.
Recuperar 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>Sé que esto es muy antiguo, pero, para quien sea, ayuda.
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 realizar una búsqueda, ir al número de línea, buscar un patrón, mucho más y además es más rápido para archivos grandes.
es como vim para registros [totalmente mi opinión]
Documentación original de less: https://linux.die.net/man/1/less
menos hoja de trucos: https://gist.github.com/glnds/8862214
Simplemente puede usar el siguiente comando: -
cola -NUMBER_OF_LINES FILE_NAME
por ejemplo tail -100 test.log
En caso de que desee el resultado de lo anterior en un archivo separado, puede canalizarlo de la siguiente manera:
tail -NUMBER_OF_LINES FILE_NAME > OUTPUT_FILE_NAME
por ejemplo tail -100 test.log > output.log
len=`cat filename | wc -l` len=$(( $len + 1 )) l=$(( $len - 99 )) sed -n "${l},${len}p" filenamela primera línea toma la longitud (líneas totales) del archivo, luego +1 en las líneas totales, después de eso, tenemos que buscar 100 registros, por lo tanto, -99 de la longitud total, luego simplemente coloque las variables en el comando sed para obtener las últimas 100 líneas del archivo
Espero que esto ayude.