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.

Surabhi
fuente
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
Steephen
fuente
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

Comunidad
fuente
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>
Amitesh Bharti
fuente
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

mdsadiq
fuente
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.

axy_1976
fuente