-
Utilisez less
dans une fenêtre de terminal. Il vous montrera une page à la fois du fichier, ne chargera qu'environ cette quantité en mémoire, de sorte que vous pouvez naviguer dans des fichiers multi-TB avec lui si vous le souhaitez.
Vous devriez probablement ajouter le -n
pour empêcher less
d'essayer de calculer les numéros de ligne. Donc :
less -n /path/to/file
Rappelez-vous que vous pouvez taper less -n
(n'oubliez pas l'espace final) et faites glisser le fichier du Finder vers la fenêtre du terminal pour ajouter le chemin d'accès à ce fichier.
-
Une fois que vous avez visualisé le fichier dans less
vous pouvez :
- naviguer à l'aide des flèches haut/bas,
space
(une page plus bas), b
(une page en arrière)...
- recherche en utilisant
/
. Vous pouvez également rechercher les lignes ne contenant pas de motif avec /!
. La recherche inversée utilise ?
. Mais toutes les recherches analysent l'ensemble du fichier. Il vaut mieux l'avoir sur un SSD si vous le faites souvent.
- naviguer vers une ligne spécifique du fichier en utilisant <numéro> suivi de
G
(G majuscule)
- naviguer vers une partie spécifique du fichier en utilisant <numéro> suivi de
%
. Donc 50%
vous amènera au milieu du fichier, 90%
jusqu'aux derniers 10%, etc.
Si votre fichier journal comporte des horodatages et que vous savez à quel moment vous voulez le consulter, l'approche la plus rapide est la suivante :
- ouvrir le fichier
-
Utilisez une "recherche binaire" pour trouver la partie brute du fichier qui vous intéresse :
- Type
50%
qui vous montrera le milieu du fichier.
- Si la partie que vous voulez est après, allez à
75%
sinon 25%
- Répétez l'opération jusqu'à ce que vous ayez trouvé la partie pertinente.
- Utilisez une recherche régulière (en utilisant
/
pour aller de l'avant ou ?
pour revenir en arrière) pour trouver la ligne exacte que vous recherchez (sur la base de l'horodatage exact ou d'un mot spécifique qui montre le problème).
Cela devrait vous permettre de naviguer rapidement vers la partie pertinente du fichier.
Si vous pensez que vous aurez beaucoup de recherches à effectuer dans un sous-ensemble du fichier, vous pouvez utiliser alternativement grep
avec une combinaison spécifique de date ou d'heure (dans le bon format) pour extraire d'abord ce sous-ensemble dans un autre fichier plus petit. Par exemple, si vous savez que le crash s'est produit aujourd'hui un peu après midi alors que votre journal couvre plusieurs mois, vous pourriez
grep '2020-02-17 12:' /path/to/file > extracted-log.txt
Vous obtiendrez ainsi toutes les lignes qui contiennent un horodatage compris entre 12:00:00 et 12:59:59 inclus. Bien entendu, le format exact dépendra du format réel utilisé pour les horodatages.
grep
analysera le fichier entier une fois pour trouver toutes les lignes pertinentes, ce qui prendra un peu de temps sur un très gros fichier, mais vous aurez alors un fichier beaucoup plus facile à gérer.
Une alternative peut être d'utiliser dd
pour "extraire" une partie du fichier original, en utilisant des décalages et des longueurs trouvés dans less
( Ctrl-G
pour obtenir le décalage actuel). dd
est un outil très puissant mais peut être très dangereux à utiliser, donc à utiliser avec précaution (et certainement pas en tant que root
ou avec sudo
si vous n'êtes pas sûr à 100% de ce que vous faites) :
dd if=/path/to/original/file of=destination_file.txt bs=1 skip=<start offset> count=<length>
Notez que cela n'est pas très efficace, il est préférable d'utiliser une taille de bloc plus importante ( bs
), idéalement une puissance de 2 telle que 1024, et diviser skip
y count
par cette taille de bloc.
Je suis sûr qu'il doit y avoir d'autres outils qui font la même chose, mais je n'ai rien trouvé. Je pense que certaines versions de cat
peut le faire, mais pas celui de MacOS apparemment.
18 votes
Avez-vous besoin de lire le fichier pour le parcourir à la recherche de détails ou de défauts intéressants ou avez-vous besoin d'effectuer une recherche dans le fichier ? Le fichier a-t-il un horodatage cohérent ? Les réponses ci-dessous conviennent toutes, mais à partir de 80 Go, vous devez envisager des techniques d'analyse et de recherche de journaux pour trouver les données dont vous avez besoin pour votre analyse. Voici un exemple de question, mais hors sujet serverfault.com/questions/63297/good-free-tomcat-log-analyser
2 votes
Voir aussi : askubuntu.com/questions/28847/ et vi.stackexchange.com/questions/149/
0 votes
Serait-il raisonnable d'écrire un analyseur pour le fichier qui extrait les enregistrements et les ajoute en tant que lignes dans une base de données ? Les bases de données sont conçues pour trier et rechercher efficacement des millions d'enregistrements ; les éditeurs de texte ne le sont pas.