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
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.