Bonjour,
Soit un gros fichier d'environ 90 000 lignes (mais ça peut varier légèrement) dans lequel j'ai besoin de récupérer le contenu d'un numéro de ligne déterminé aléatoirement
En KSH, j'ai donc écrit le bout de code suivant
Ca marche bien mais le problème, c'est lent, bcp trop lent (2 secondes pour remonter la valeur).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #! /bin/ksh # Mon gros fichier fileEntree=$1 # Nombre de ligne dans le fichier nbEntree=`cat $fileEntree | wc -l` # numéro de la ligne a atteindre numEntree=$RANDOM # Modulo let "numEntree %= $nbEntree" # récupération de la ligne par head et tail entree=`head -${numEntree} $fileEntree | tail -1` echo "entree = "$entree
Or ce bout de code fonctionne dans un autre script et au total, ca met 48h ! (Si je le désactive, ca ne mets "que" 4h)
Je cherche donc une autre méthode plus rapide.
J'ai envisagé de mettre le fichier dans un tableau ksh mais comme la taille du tableau est limité à 4096, ca ne marche pas.
Est-ce qu'il existe une méthode ou fonction du côté de perl ou awk ou ... pour faire un accés direct dans un fichier à partir du numéro de ligne ?
D'avance merci
Partager