Parser et tester un fichier txt volumineux
jimichili
-
jimichili -
jimichili -
Bonjour,
J'ai un fichier .txt d'une taille de 300 Mo contenant plusieurs milliers de lignes de la forme suivante :
X Y Z
ou X, Y Z sont des nombres séparés par un espace.
je cherche un logiciel ou un bout de code me permettant de ne garder que les lignes où les nombres X et Y sont dans des intervalles donnés du type a<X<b et c<Y<d.
Pourriez-vous me conseiller qqch d'assez simple et robuste vu la taille du fichier, (sous windows ou linux), ?
Merci
JM
J'ai un fichier .txt d'une taille de 300 Mo contenant plusieurs milliers de lignes de la forme suivante :
X Y Z
ou X, Y Z sont des nombres séparés par un espace.
je cherche un logiciel ou un bout de code me permettant de ne garder que les lignes où les nombres X et Y sont dans des intervalles donnés du type a<X<b et c<Y<d.
Pourriez-vous me conseiller qqch d'assez simple et robuste vu la taille du fichier, (sous windows ou linux), ?
Merci
JM
Configuration: Windows XP Firefox 2.0.0.17
3 réponses
-
-
hello
avec awk, aussi disponible pour Windows
awk '$1 > a && $1 < b && $2 > c && $2 < d {print $0}' -
Salut,
Un algo qui serait simple, peu consommateur de mémoire et je pense assez rapide://Remplace a,b,c et d par tes constantes #define LIGNE_CORRECTE(X,Y) (a<X && X<b && c<Y && Y<d) int main() { int x, y, z; FILE *ancien = fopen("ancien.txt", "r"); FILE *nouveau = fopen("nouveau.txt", "w"); while (fscanf(ancien, "%d %d %d", &x, &y, &z)) { if (LIGNE_CORRECTE(x,y)) fprintf(nouveau, "%d %d %d", x, y, z); } fclose(ancien); fclose(nouveau) return 0; }