|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() BioInformaticien Inscription : décembre 2012 Messages : 49 ![]() |
Bonjour à tous,
Je manipule actuellement d'assez gros fichiers (quelques Go chacuns). Pour l'exemple, disons que ce sont des livres sur le fromage. Je cherche à trouver la position d'une liste de mots dans mon texte. Je pensais faire une expression régulière du type : Puis de tester pour tous mes mots. Malheureusement, je ne sais pas comment afficher la position de mon match. Est-ce possible ? De plus j'ai peur que le process soit long puisqu'il faut systématiquement parcourir tout le fichier. Une autre possibilité serait : Code perl :
1-la variable $texte contiendrait tout mon fichier de plusieurs Go... 2-Une boucle de quelques milliards d'occurence ça peut être long... même en perl... Y a t'il des façons plus simples ? Bibliothèques ? etc ? Peut être parser mon fichier ligne par ligne ? (je veux aussi savoir si mon mot arrive en bout de ligne ; il pourrait y avoir un saut de ligne au milieu du mot... Donc il faudrait gérer ce cas en mettant en mémoire les derniers caractères de la ligne précédente ? ) Merci pour votre aide! Edit : typo... |
||
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Inscription : mai 2002 Messages : 105 ![]() |
$-[0] est la position ou commence le match.
__________________
In code we trust !! |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Laurent R.Conseil - Consultant en systèmes d'information Inscription : mai 2012 Messages : 569 ![]() |
Essayer de monter en mémoire un fichier de plusieurs Go, je ne te le conseille pas...
Donc, lire ligne à ligne, et pour chaque ligne, rechercher chaque fromage. Oui, ça va prendre un peu de temps, mais il ne faut pas confondre quelques milliards d'octets et quelques milliards d'occurrences, on n'est pas dans le même ordre de grandeur. Je parcours régulièrement des fichiers de 10 à 30 Go, ça prend quelques minutes, voire une dizaine ou une quinzaine de minutes pour les plus gros, c'est assez long, mais rien de vraiment rédhibitoire. Après, tout dépend du nombre de mots que tu vas rechercher à chaque fois.
__________________
Sauf mention contraire explicite, les bouts de code que je poste en réponse à une question n'ont pas forcément été testés. |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() BioInformaticien Inscription : décembre 2012 Messages : 49 ![]() |
Merci à vous deux!
La meilleure façon de savoir combien de temps ça prend est encore de tester! Si ça prend trop de temps, j'essayerais d'améliorer petit à petit mon algo |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com