Traitement des fichiers(cat)
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.
Code:
1 2 3
| AZERTYUIOPQSDF 02 20110921014732000000000111111111111111 4444444444444 AAAAAAA AAAAAAA
QSDFGHJ 03 20110923014553741244444444444444444444 1111111111111 ZZZZZZZ
AAAAAAA 06 20110921014524000000000000000000000000 000000000 ZZZZZZZ |
Critère de filtre : date_csv doit être entre date_début et date_fin.
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 :
Code:
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 |
problème la commande cat transforme les lignes résultat :
Code:
1 2
| AZERTYUIOPQSDF 02 20110921014732000000000111111111111111 4444444444444 AAAAAAA AAAAAAA
AAAAAAA 06 20110921014524000000000000000000000000 000000000 ZZZZZZZ |
merci d'avance