J'ai souvent affaire à des fichiers journaux incroyablement volumineux (> 3 Go). J'ai remarqué que les performances de less sont terribles avec ces fichiers. Souvent, je veux sauter au milieu du fichier, mais quand je dis moins de sauter en avant de 15 lignes, cela prend quelques minutes.
Le problème que j'imagine est que moins de besoins pour analyser le fichier pour les caractères «\ n», mais cela prend trop de temps.
Existe-t-il un moyen de le faire rechercher simplement un décalage explicite? par exemple, chercher à octet compenser 1,5 milliard dans le fichier. Cette opération devrait être plus rapide de plusieurs ordres de grandeur. Si moins ne fournit pas une telle capacité, existe-t-il un autre outil qui le fait?
perl -pi -e 's/\n//g;' <filename>
Réponses:
vous pouvez moins vous arrêter de compter des lignes comme celle-ci
less -n
Pour sauter à un endroit spécifique comme disons 50%,
less -n +50p /some/log
c'était instantané pour moi sur un fichier journal de 1,5 Go.Modifier: pour un décalage d'octet spécifique:
less -n +500000000P ./blah.log
la source
Moins, étant un téléavertisseur, est intrinsèquement orienté ligne. Lorsque vous démarrez, si c'est un gros fichier, il dira "compter les numéros de ligne" et vous appuyez sur ÉCHAP pour arrêter cela, mais sinon, il fait des lignes. C'est ce que ça fait.
Si vous voulez sauter directement au milieu du fichier et sauter le début, vous pouvez toujours chercher au-delà du début; Je ferais quelque chose comme
tail -c +15000000 /some/log | less
.la source
tail -c ...
ou vous avez unelast
commande bizarre .less
semble avoir une petite surcharge des paramètres régionauxSi vous utilisez uniquement des caractères ASCII, vous pouvez l'accélérer un peu en utilisant:
Dans mon cas, le débit est passé de ~ 30M ib / s à ~ 50 Mib / s (le taux est lié au CPU)
la source