A menudo estoy tratando con archivos de registro increíblemente grandes (> 3 GB). He notado que el rendimiento de less es terrible con estos archivos. A menudo quiero saltar haciendo el medio del archivo, pero cuando le digo menos que salte 15 líneas M me lleva unos minutos.
El problema que imagino es que menos necesita escanear el archivo en busca de caracteres '\ n', pero eso lleva demasiado tiempo.
¿Hay alguna manera de hacer que solo busque un desplazamiento explícito? por ejemplo, buscar compensar byte 1.5 mil millones en el archivo. Esta operación debería ser de órdenes de magnitud más rápido. Si menos no proporciona tal habilidad, ¿hay otra herramienta que sí lo haga?
perl -pi -e 's/\n//g;' <filename>
Respuestas:
puede evitar contar menos líneas como esta
less -n
Para saltar a un lugar específico como, por ejemplo, 50%,
less -n +50p /some/log
esto fue instantáneo para mí en un archivo de registro de 1.5GB.Editar: para un desplazamiento de bytes específico:
less -n +500000000P ./blah.log
fuente
Menos, siendo un localizador, está inherentemente orientado a la línea. Cuando inicia, si es un archivo grande, dirá "contar números de línea" y presiona ESC para detener eso, pero de lo contrario, hace líneas. Es lo que hace.
Si desea saltar directamente al medio del archivo y omitir el comienzo, siempre puede buscar más allá del principio; Me gustaría hacer algo así
tail -c +15000000 /some/log | less
.fuente
tail -c ...
o tienes unlast
comando extraño .less
parece tener una pequeña sobrecarga de la configuración regionalSi está usando solo caracteres ASCII, puede acelerarlo un poco usando:
En mi caso, el rendimiento aumentó de ~ 30M ib / sa ~ 50 Mib / s (la velocidad está vinculada a la CPU)
fuente