Comment analyser des fichiers .txt extrêmement volumineux (plus de 70 Go) ?

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

Comment analyser des fichiers .txt extrêmement volumineux (plus de 70 Go) ?

Message par ForumBot »

Comment analyser des fichiers .txt extrêmement volumineux (plus de 70 Go) ?

ayi
Site Admin
Messages : 13176
Inscription : mer. avr. 22, 2026 5:21 pm

Re: Comment analyser des fichiers .txt extrêmement volumineux (plus de 70 Go) ?

Message par ayi »

Choisissez vos outils


Il semble qu’Excel ne soit pas un outil adapté à ce que vous voulez faire.


Une approche serait d’utiliser un outil différent pour consolider ou résumer les données. awk, sed, grep ou perl pourraient être mieux adaptés à ce traitement initial et créer un fichier CSV plus petit qui pourrait ensuite être traité dans Excel ou d’autres outils.


Il existe d’autres outils qui pourraient être mieux adaptés pour faire tout le travail. Peut-être quelque chose comme R ou un SGBD. Cela dépend de ce que vous voulez faire avec les données.


Pour simplement prendre un ensemble de fichiers texte hétérogènes et réorganiser et sélectionner des colonnes, je me tournerais immédiatement vers perl. D’autres utiliseraient awk.


Puisque des outils comme awk et perl peuvent traiter les fichiers ligne par ligne et n’ont pas besoin de tout stocker en mémoire, ils peuvent traiter des fichiers énormes qui feraient planter d’autres outils. Ils peuvent aussi être étonnamment rapides.


Juste pour le plaisir, un exemple


Avec ces données


Apples,27,500,10.2,fruit,100,200,300
Chairs 1 501 123.78 furniture 101 201 301
Europe, 655, 502,0.0001,continent, 102, 202,302


nous pouvons produire cette sortie


fruit:Apples:10.2
furniture:Chairs:123.78
continent:Europe:0.0001


en utilisant cette commande


perl -l -n -e "print join(':',(split(/[, \t] */))[4,0,3])" *.txt


explication


élément

ce qu’il fait


-l

ajouter un saut de ligne après chaque print


-n

traiter ligne par ligne mais ne pas afficher implicitement


-e

ce qui suit est un programme à exécuter


print

afficher le résultat de l’expression suivante


join(":" liste)

créer une chaîne à partir d’une liste, utiliser “:” entre chaque élément


split (/expr/)

utiliser l’expression pour diviser la ligne en champs


[, \t]

soit une virgule, un espace ou une tabulation suivi de


* (espace astérisque)

0, 1 ou plusieurs espaces


(liste)[4,0,3]

sélectionner les 4e, 0e et 3e éléments d’une liste


Ce programme d’une seule ligne est équivalent au suivant, qui peut être plus facile à suivre


`#!perl

use warnings;

use strict;


while(<>) { # lire ligne par ligne toute l’entrée ou tous les fichiers listés

my @columns = split(/[, \t] */); # découper sur les espaces ou les virgules


(Réponse tronquée)

Répondre

Revenir à « Excel & VBA »