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
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
Ca marche bien mais le problème, c'est lent, bcp trop lent (2 secondes pour remonter la valeur).
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