Bonjour,
Je suis en train de faire un script shell, j'aimerais faire quelque chose si quelqu'un pouvait m'aider.
J'ai un fichier csv et je veux récupérer que les lignes qui respectent mon critère de filtre (ou de supprimer les lignes qui ne respectent pas mon critère de filtre).
Voici un extraire de mon fichier csv.
Critère de filtre : date_csv doit être entre date_début et date_fin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 AZERTYUIOPQSDF 02 20110921014732000000000111111111111111 4444444444444 AAAAAAA AAAAAAA QSDFGHJ 03 20110923014553741244444444444444444444 1111111111111 ZZZZZZZ AAAAAAA 06 20110921014524000000000000000000000000 000000000 ZZZZZZZ
date_csv : commence à partir de la position 34 jusqu'à la position 42 sous forme AAAAMMJJ.
date_début : sous forme AAAAMMJJ.
date_fin : sous forme AAAAMMJJ.
J'ai développé un script :
problème la commande cat transforme les lignes résultat :
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 #!/bin/ksh rep_f="echantillon_fichier" rep_f_R="echantillon_fichier_R" date_d=20110921 date_f=20110921 echo "1" ls $rep_f | while read nom_f do echo "2" nb_ligne=0 cat -v $rep_f/$nom_f | while read ligne_f do echo "3" date_l=`echo $ligne_f | awk -F" " '{print $3}'|cut -c1-8` if [ $date_d -ge $date_l ] && [ $date_l -ge $date_f ] then echo $ligne_f>>"${rep_f_R}/${nom_f}.temp" nb_ligne=`expr $nb_ligne + 1 ` fi done if [ $nb_ligne != 0 ] then echo "nb: ${nb_ligne}">>"${rep_f_R}/${nom_f}.temp" fi done
merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 AZERTYUIOPQSDF 02 20110921014732000000000111111111111111 4444444444444 AAAAAAA AAAAAAA AAAAAAA 06 20110921014524000000000000000000000000 000000000 ZZZZZZZ
Partager