Pour les perfs, ca dépend si tu veux extraire juste une ligne, ou plusieurs.
Les trucs genre :
head -$i fichier2.txt | tail -1 sed -n "$i p" fichier2.txt awk "NR==$i" fichier2.txt nl fichier2.txt | grep "[ ]\+$i[ ]\+" | cut -f 2
|
c'est bien pour extraire juste une ligne occasionnellement, mais c'est
très mauvais si tu dois répéter l'opération, tu lis tout le fichier à chaque fois que tu veux une ligne (enfin presque tout)
Et avec la solution avec pipe tu prends cher en plus ![:D :D](https://forum-images.hardware.fr/icones/biggrin.gif)
Si je tente la totale (pour rire, niveau algo c'est archi merdique):
for((i=0 ; i<`cat fichier.txt | wc -l` ; i++)); do head -$i fichier2.txt | tail -1 done
|
c'est à dire à chaque itération 2 lectures complètes du fichier + 2
pipes (test du for + corps du for), la commande time m'indique
gentillement 23 secondes pour lire 200 lignes sur ma machine.
Evidemment là faut utiliser des file descriptors + un compteur, comme ca ca roule
Message édité par Xavier_OM le 22-02-2008 à 12:12:52
---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.