Tu ne le ferais pas.
Même un fan de Tolkien ne veut pas 82,7 Go de quoi que ce soit. Vous n'en voulez que certains morceaux, vous le saurez quand vous le verrez.
Et même envisager un outil qui analyse l'ensemble du fichier est une perte de temps, littéralement ; il va passer 15 minutes à lire le fichier en supposant 100MB/sec. C'est beaucoup plus lent si l'analyse est complexe.
Le terminal est votre ami
L'avantage de cette solution est que OS X est construit au-dessus d'Unix. C'est en grande partie pour cela qu'Apple a acheté NeXT et que Steve Jobs est revenu. Cela signifie que vous pouvez utiliser toute la suite d'outils Unix, qui sont extrêmement bien rodés et très bien supportés ici.
Il existe des dizaines de façons de le faire sans perl, mais comme perl est intégré à MacOS et qu'il est infiniment extensible, je préfère commencer par là (plutôt que de le faire dans un outil plus simple, de vouloir améliorer quelque peu la requête, de se heurter aux limites de cet outil et de devoir la refaire dans un autre outil). Donc quelque chose comme ceci dans un fichier appelé, disons "xx" :
$len = -s "filename.log"; # variable becomes length of file
open ($IN, "<", "filename.log");
seek ($IN, $len - 10_000_000, 0); # perl allows _ in numbers for readability
while (<$IN>) { # <> reads a line. Default variable is metavariable $_
print; # with no argument, default is metavariable $_
}
Il ne lira pas tout le fichier, mais se contentera de le rechercher à l'emplacement spécifié (à 10 Mo de la fin), puis lira et imprimera tout ce qui se trouve à la fin. Il ne fera que l'imprimer à l'écran, donc pour l'envoyer dans le fichier, faites ceci lorsque vous l'appelez :
perl xx > tailfile.txt
Vous avez maintenant un fichier tailfile.txt de 10 Mo que vous pouvez ouvrir avec autre chose.
Il y a des moyens plus simples de faire juste que mais supposez que vous réalisiez "Attendez, je veux faire plus. Je ne veux que des erreurs et des avertissements". Vous changez donc la commande print en
print if /error/i or /warning/i; # // matches text, defaults to $_
Cela aussi peut être accompli avec des outils plus simples si vous passez suffisamment de temps à fouiller dans la documentation. Mais ensuite, vous décidez que vous avez besoin de voir ces trois lignes après l'erreur. Comme ça... vous avez dépassé les outils plus simples, mais c'est trivial en Perl. Vous pouvez simplement continuer à shimmer Perl pour toujours. Il y a un langage de programmation complet là-dedans. Orienté objet et tout.
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.