Bash/awk
Fermé
g@555
Messages postés
7
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
20 juin 2013
-
16 avril 2013 à 15:28
g@555 Messages postés 7 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 20 juin 2013 - 25 avril 2013 à 18:48
g@555 Messages postés 7 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 20 juin 2013 - 25 avril 2013 à 18:48
A voir également:
- Bash/awk
- Bingo bash jeton gratuit - Télécharger - Divers Jeux
- Minimal bash-like line editing is supported ✓ - Forum Linux / Unix
- Bash pause ✓ - Forum Shell
- Bash addition ✓ - Forum Shell
- Bash: adduser : commande introuvable ✓ - Forum Debian
4 réponses
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
21 avril 2013 à 14:02
21 avril 2013 à 14:02
essayer
#!/bin/bash declare -A T2 T3; declare -i S1 i=0 while read DATE X ; do T1[((i++))]=${DATE:0:8}; T2[$DATE]=$X ; T3[${DATE:0:8}]="ok" done < fichier_dates S1=$(date -d "${T1[0]:4:2}/${T1[0]:6:2}/${T1[0]:0:4}" +%s) D3=${T1[0]} while [ $D3 -le ${T1[((i-1))]} ]; do if [ -n "${T3[$D3]}" ]; then for n in {00..23}; do echo $D3$n ${T2[$D3$n]}; done; else for n in {00..23}; do echo $D3$n -999; done; fi S1+=86400 D3=$(date -d "@$S1" "+%Y%m%d") done
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
16 avril 2013 à 16:07
16 avril 2013 à 16:07
hello
faut-il tenir compte du nombre exact de jour par mois en fonction de l'année (28/30/31j, bissextile ?) si le "trou" est entre la fin et le début d'un mois ?
faut-il tenir compte du nombre exact de jour par mois en fonction de l'année (28/30/31j, bissextile ?) si le "trou" est entre la fin et le début d'un mois ?
g@555
Messages postés
7
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
20 juin 2013
16 avril 2013 à 16:14
16 avril 2013 à 16:14
oui il faut que je tienne compte si c'est une année bissextile parce que j'ai plusieurs années dans ce fichier...
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
17 avril 2013 à 10:34
17 avril 2013 à 10:34
j'utilise la commande date, ainsi les fins de mois sont ok, j'utilise une date US,
donc M/J/A
essayer:
donc M/J/A
essayer:
$ cat f2 #!/bin/bash declare -A T2 ; declare -i S1 i=0 while read DATE X ; do T1[((i++))]=$DATE; T2[$DATE]=$X done < fichier_dates D1=${T1[0]} ; D2=${T1[((i-1))]} S1=$(date -d "${D1:4:2}/${D1:6:2}/${D1:0:4}" +%s) D3=$D1 while [ $D3 -le $D2 ]; do echo -n "$D3 " if [ -z ${T2[$D3]} ]; then echo -999; else echo ${T2[$D3]} ; fi S1+=86400 D3=$(date -d "@$S1" "+%Y%m%d") done $ ./f2 20001212 5 20001213 -999 20001214 -999 20001215 -999 20001216 -999 20001217 -999 20001218 -999 20001219 -999 20001220 -999 20001221 -999 20001222 -999 20001223 -999 20001224 -999 20001225 -999 20001226 -999 20001227 -999 20001228 5 20001229 4.3 20001230 25.2 20001231 32 $
g@555
Messages postés
7
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
20 juin 2013
19 avril 2013 à 13:41
19 avril 2013 à 13:41
en fait, ça ne fonctionne pas, car mes dates sont en annee/mois/jour/heure, je n'ai pas le choix de les mettre en fonction des heures finalement
est ce que c'est possible d'ajouter la dimension heure ?
mais dans mes fichiers, si la journée 20001228 existe par exemple alors toutes les heures existent également.
par contre si une journée manque, alors toutes les heures manquent également et il faut donc que je complete par -999...
merci pour votre aide...
est ce que c'est possible d'ajouter la dimension heure ?
mais dans mes fichiers, si la journée 20001228 existe par exemple alors toutes les heures existent également.
par contre si une journée manque, alors toutes les heures manquent également et il faut donc que je complete par -999...
merci pour votre aide...
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
19 avril 2013 à 13:44
19 avril 2013 à 13:44
affiche les données exactes
donc il faut compléter les heures et les jours ?
donc il faut compléter les heures et les jours ?
g@555
Messages postés
7
Date d'inscription
mardi 16 avril 2013
Statut
Membre
Dernière intervention
20 juin 2013
19 avril 2013 à 13:53
19 avril 2013 à 13:53
le fichier est plutôt de cette forme:
2006010100 77.000
2006010101 78.000
2006010102 76.000
2006010103 75.000
2006010104 73.000
2006010105 75.000
2006010106 77.000
2006010107 74.000
2006010108 77.000
2006010109 77.000
2006010110 77.000
2006010111 75.000
2006010112 73.000
2006010113 71.000
2006010114 69.000
2006010115 66.000
2006010116 66.000
2006010117 66.000
2006010118 64.000
2006010119 63.000
2006010120 60.000
2006010121 57.000
2006010122 58.000
2006010123 57.000
2006010200 55.000
2006010201 65.000
2006010202 63.000
.
.
.
donc s'il manque le 20060103 , alors il faudrait que je complete de cette façon:
2006010300 -999
2006010301 -999 etc
Aussi, mes fichiers concernent une année particulière, je ne sais pas si cela est important ?
Car en lançant le script, il ne prend pas en compte que mon fichier va du 2006010100 au 2006123123 par exemple, pourtant D1 et D2 fournissent cette indication ...
2006010100 77.000
2006010101 78.000
2006010102 76.000
2006010103 75.000
2006010104 73.000
2006010105 75.000
2006010106 77.000
2006010107 74.000
2006010108 77.000
2006010109 77.000
2006010110 77.000
2006010111 75.000
2006010112 73.000
2006010113 71.000
2006010114 69.000
2006010115 66.000
2006010116 66.000
2006010117 66.000
2006010118 64.000
2006010119 63.000
2006010120 60.000
2006010121 57.000
2006010122 58.000
2006010123 57.000
2006010200 55.000
2006010201 65.000
2006010202 63.000
.
.
.
donc s'il manque le 20060103 , alors il faudrait que je complete de cette façon:
2006010300 -999
2006010301 -999 etc
Aussi, mes fichiers concernent une année particulière, je ne sais pas si cela est important ?
Car en lançant le script, il ne prend pas en compte que mon fichier va du 2006010100 au 2006123123 par exemple, pourtant D1 et D2 fournissent cette indication ...
25 avril 2013 à 18:48