Bonjour,

J'ai un fichier de données formaté comme suit:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
1323 0.95 0.0012 0.95 0.0008 0.95 0.0009 0.97 0.0014 0.95 0.0013 0.93 0.0013 104.22 2 01-JAN-2009 RD9A
1326 0.95 0.0010 0.94 0.0017 0.96 0.0004 0.97 0.0011 0.92 0.0010 0.00 0.0000 92.64 2 19-FEB-2009 SAB5
etc...

la 15eme colonne est une date au format un peu exotique... Bref,

Mon but est de filtrer les données comprises entre 2 dates. J'ai déjà fait un petit bash qui lit le fichier ligne par ligne, et, qui compare la date dans une fonction:
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
 
date_is_beetwin()
{
DATE_ENTREE=$(date -d "$1" +%Y-%m-%d)
TIMEST_ENTREE=$(date -d "$DATE_ENTREE" +%s)
 
DATE_DEBUT=$(date -d "$2" +%Y-%m-%d)
TIMEST_DEBUT=$(date -d "$DATE_DEBUT" +%s)
 
DATE_FIN=$(date -d "$3" +%Y-%m-%d)
TIMEST_FIN=$(date -d "$DATE_FIN" +%s)
 
 test $(($TIMEST_DEBUT - $TIMEST_ENTREE)) -le 0 -a $(($TIMEST_ENTREE - $TIMEST_FIN))  -le 0  && return 0 || return 1
}
 
while read ligne
do
   set $(echo $ligne)
   pDate=$(eval echo ${16})
   pFreq=$(eval echo ${14})
 
if date_is_beetwin $pDate $dateMin $dateMax ; then
    echo "date:${pDate} dans tmpTot.dat"
    echo $ligne >>  tmpTot.dat
else
    echo "date:${pDate} exclue"
fi
 
done < exportFiltre.dat
Le problème c'est que mon fichier contient plusieurs 100ene de lignes et que ça met des heures!!!

Avez vous des pistes pour que le filtre soit plus rapide?

Merci et très bonne journée