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 logfilename
Para 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. Ver mi respuesta con el informe strace para tail ./huge-file
:https://unix.stackexchange.com/questions/102905/does-tail-read-the-whole-file/102910#102910
Simplemente puede usar el siguiente comando:-
cola -NUMBER_OF_LINES FILE_NAME
por ejemplo, tail -100 test.log
- obtendrá las últimas 100 líneas de test.log
En caso de que desee la salida de lo anterior en un archivo separado, puede canalizarse de la siguiente manera:-
cola -NUMBER_OF_LINES FILE_NAME> OUTPUT_FILE_NAME
por ejemplo, tail -100 test.log > output.log
- obtendrá las últimas 100 líneas de test.log y las almacenará en un nuevo archivo output.log)
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 como lo menciona twalberg usan el comando:
tail -n 100 <log file> > newLogfile
"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 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>