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). 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 :
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 :(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
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.
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 #!/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
Toute aide est la bienvenue, et sera de facto appréciée
Merci !
Partager