Bonjour,
J'ai un fichier My_file à 3 colonnes:
col1: de 1 à 8, col2: de 9 à 17,col3:de 18 à 48
(Typiquement: Nom, Prénom, Adresse)
Je cherche à avoir 2 fichiers : $Adr_file contenant la liste des adresses avec des numeros (Ids), et $Id_Adr_file contenant Nom, Prénom, et le Numéro (Id) correspondant.
Ce code marche à merveille, sauf que ça prend beacoup de temps(45 min) pour 17000 lignes
Quelqu'un a une idée pour améliorer la logique??
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 awk ' {var1=substr($0,17,30); printf("%s",var1) printf( "\n" ) } ' $My_file > TEMP1 # remove duplicates sort -o $Adr_file TEMP1 uniq $Adr_file > TEMP if [ -f TEMP2 ] then rm TEMP2 fi #Cette partie est celle qui consomme beacoup de temps while read line do adresse=`expr substr "$line" 17 30` p_id=`grep -x -n "$adresse" TEMP | cut -f1 -d ":"` printf "%-3s %s" $p_id >> TEMP2 echo $line >> TEMP2 done < $My_file if [ -f $Adr_file ] then rm $Adr_file fi i=1 while read line do printf "%-3s %s" $i>> $Adr_file echo $line >> $Adr_file i=$(expr $i + 1 ) done < TEMP #ce awk file va simplement virer la colonne adresses du fichier final awk -f adresse.awk TEMP2 > $Id_Adr_file
Merci
Partager