grep et une expression régulière
Bonsoir tout le monde !
Je ne suis pas un développeur de talent (en fait je ne suis pas développeur du tout, mais je développe un peu quand même, alors ça crée des problèmes :aie:). Voilà ce que j'essaye de faire : j'ai un très gros fichier que je veux subdiviser en petits fichiers. Une ligne de ce fichier = une donnée. Il est formaté de la manière suivante :
Citation:
(Date,Heure,donnée1,donnée2,donnée3)
jj/mm/aaaa,hh:mm:ss.ssssss,xxxxx.xx,xxxxx.xx,xxxxx.xx
ex : 28/05/2012,12:33:02.000,817375.767,9471391.780,33.000
Je voudrais donc créer un fichier par nuit. Donc pas de minuit à 23:59, mais de 12:00 à 11:59 le lendemain. Je vous donne mon script :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #!/bin/ksh
SOIR=27/05/2012 # Initialisation : première date que je vais considérer
# je veux une arborescence du type : année/mois
mkdir -p $DIR_DATA/$(echo $SOIR|awk -F'/' '{print $3}')/$(echo $SOIR|awk -F'/' '{print $2}')
fichier_out=$DIR_DATA/$(echo $SOIR|awk -F'/' '{print $3}')/$(echo $SOIR|awk -F'/' '{print $2}')/"$(echo $SOIR|sed -e "s./._.g").txt"
# Je boucle sur les dates UNIQUES differentes dans le gros fichier à diviser, et j'enlève la première de ces dates puisqu'on s'en est déjà occupé juste avant.
for data_file in $(tail -n +4 $DIR_DATA/Week22_33_Congo_GNSS-2.txt | cut -d, -f1 | uniq | grep -v "27/05/2012")
do
MATIN=$data_file # Donnée du jour suivant (dont je ne veux récupérer que la première partie à l'aide du grep)
grep -E "^($SOIR,[12-23])|($MATIN,(0[0-9])|[10-11]):" $DIR_DATA/test.txt > $fichier_out
SOIR=$MATIN # Donnée du jour "précédent" (au passage suivant de la boucle)
# Je crée un nouveau dossier si je change de mois
mkdir -p $DIR_DATA/$(echo $SOIR|awk -F'/' '{print $3}')/$(echo $SOIR|awk -F'/' '{print $2}')
# Je crée mon nouveau fichier
fichier_out=$DIR_DATA/$(echo $SOIR|awk -F'/' '{print $3}')/$(echo $SOIR|awk -F'/' '{print $2}')/"$(echo $SOIR|sed -e "s./._.g").txt"
done |
Mais ça ne marche pas. Je soupçonne la regex d'être fausse, mais comme je n'arrive pas à la corriger si c'est bien le cas.
Toute aide est la bienvenue, et sera de facto appréciée :)
Merci !