Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2270 connectés 

 


Dernière réponse
Sujet : [SCRIPT SHELL] Convertion de date
Bu1979 Bonjour
 
Je reviens sur cet ancien Topic, car j'aimerai connaitre les commandes pour obtenir l'exact oppose:
C'est a dire de passer d'un format comme celui-ci:  
aaaammjj
A celui ci:
jj/mm/aaaa
 
Cependant j'ai un souci supplemetaire, c'est que mon fichier d'Input contient ce format "aaaammjj", et mon fichier d'output doit contenir celui la "jj/mm/aaaa", c'est a dire que ce n'est pas qu'une valeur a tranformer mais bien plusieurs.
 
Exemple:  
 
233256.00;25663325.00;PKR;20070920;
5153743.43;4831391.53;HKD;20070921;
5153743.43;4831391.53;HUF;20070922;
 
a transformer en:
233256.00;25663325.00;PKR;20/09/2007;
5153743.43;4831391.53;HKD;21/09/2007;
5153743.43;4831391.53;HUF;22/09/2007;
 
Merci pour votre aide

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Bu1979 Bonjour
 
Je reviens sur cet ancien Topic, car j'aimerai connaitre les commandes pour obtenir l'exact oppose:
C'est a dire de passer d'un format comme celui-ci:  
aaaammjj
A celui ci:
jj/mm/aaaa
 
Cependant j'ai un souci supplemetaire, c'est que mon fichier d'Input contient ce format "aaaammjj", et mon fichier d'output doit contenir celui la "jj/mm/aaaa", c'est a dire que ce n'est pas qu'une valeur a tranformer mais bien plusieurs.
 
Exemple:  
 
233256.00;25663325.00;PKR;20070920;
5153743.43;4831391.53;HKD;20070921;
5153743.43;4831391.53;HUF;20070922;
 
a transformer en:
233256.00;25663325.00;PKR;20/09/2007;
5153743.43;4831391.53;HKD;21/09/2007;
5153743.43;4831391.53;HUF;22/09/2007;
 
Merci pour votre aide
philou_a7 echo $DATEACONVERTIR | tr -d '/' | xargs date +"%Y%m%d" -d
 
ca allait beaucoup plus vite que perl ou bash :D
man date ;)
burgergold sérieusement je vois pas beaucoup d'avantage à perl pour le web
 
par contre, pour n'importe scrit d'administration, sous unix ou windows, je trouve ca extrêmement puissant. Les librairies t'évite justement à faire des passe passe comme tu as du le faire tout a l'heure. La communauté est très vivante.
mytoo

Burgergold a écrit :

on ferme jamais un sujet sauf si c'est un troll
 
sinon pk tant de haine envers perl? ca permet de faire tellement de chose sympathique :D


ha oki, vu que m'on problème était résolu, dois-je modifié mon titre alors?
 
 :D pour perl, non, non , mais disons que je préfère me contenter de bash pour le moment
mais est-ce que perl et vraiment beaucoup mieux? où est-il utilisé surtout pour le web?

burgergold on ferme jamais un sujet sauf si c'est un troll
 
sinon pk tant de haine envers perl? ca permet de faire tellement de chose sympathique :D
mytoo VOUS POUVEZ FERMER CE SUJET
Klaimant

zaib3k a écrit :

copié/collé de mytoo :D


 
moi j'en mets jamais c'est pour ca :P

Zaib3k

Klaimant a écrit :

Pourquoi des acolades ?


 
copié/collé de mytoo :D

mytoo

Klaimant a écrit :

Pourquoi des acolades ?


ben je sais pas , c'est un reflexe que j'ai pris
 
comment tu aurais fait pour çà:
date="${annne}${mois}${jour}"

mytoo Dernier question comment je fais pour transformer
en variable tout accroché?date="$annne.$mois.$jour"
sans les points?
 
pour par exemple
echo "test" >fichier.$date.log
 
 
non rien je suppose que çà focntionne  :p  
date="${annne}${mois}${jour}"
echo "test" >fichier.$date.log
Klaimant

zaib3k a écrit :

Code :
  1. 1 test="29/Mar/2004"
  2.       2 jour=$(echo $test | cut -d "/" -f1)
  3.       3 mois=$(echo $test | cut -d "/" -f2)
  4.       4 annee==$(echo $test | cut -d "/" -f3)
  5.       5
  6.       6 case $mois in
  7.       7   Jan) mois="01";;
  8.       8   Mar) mois="03";;
  9.       9 esac
  10.      10
  11.      11 echo "j: ${jour} m: ${mois} a:${annee}"


 
ca aussi ca marche


 
Pourquoi des acolades ?

mytoo merci zaib3k çà fonctionne (au pire j'aurais utiliser la fonction exit
 
merci à tous
Zaib3k

Code :
  1. 1 test="29/Mar/2004"
  2.       2 jour=$(echo $test | cut -d "/" -f1)
  3.       3 mois=$(echo $test | cut -d "/" -f2)
  4.       4 annee==$(echo $test | cut -d "/" -f3)
  5.       5
  6.       6 case $mois in
  7.       7   Jan) mois="01";;
  8.       8   Mar) mois="03";;
  9.       9 esac
  10.      10
  11.      11 echo "j: ${jour} m: ${mois} a:${annee}"


 
ca aussi ca marche

mytoo

zaib3k a écrit :

remplace  `` par $(). c mieux :o


oki

mytoo

Klaimant a écrit :

jour=`echo $test | cut -d "/" -f1`
 
testé et approuvé par mon bash


 
oui çà focntionne  :D , génial sauf que je ne vois plus mais valeur
j: m: a:
est ce à cause de la focntion case?
car quand je met un dièse à mois:#mois...
j'ai bien j:29 m: a:2004

Zaib3k remplace  `` par $(). c mieux :o
Klaimant jour=`echo $test | cut -d "/" -f1`
 
testé et approuvé par mon bash
mytoo idem
pourtant j'ai bien utilisé ` (sur la touche 7) et non ' (sur la touche 4)
 
j'ai un message pour chaque variable
cut: 29/Mar/2004: No such file or directory
...
j: m: a:
Klaimant

mytoo a écrit :

j'ai pareille
avec j: m: a:
c'est grave docteur Klaimant? :??:


 
autant pour moi, pas d'espace entre le -f et le 1 : -f1

mytoo

Klaimant a écrit :

jour=`cut -d "/" -f 1 $test`


j'ai pareille
avec j: m: a:
c'est grave docteur Klaimant? :??:

Klaimant
jour=`cut -d "/" -f 1 $test`
mytoo :cry:  


test="29/Mar/2004"
jour=$($test | cut -d "/" -f 1)
mois=$($test | cut -d "/" -f 2)
annee==$($test | cut -d "/" -f 3)
 
case $mois in
 Jan) mois="01"; break;;
...
esac
 
echo "j: ${jour} m: ${mois} a:${annee}


et bien j'ai une erreur pour les variables  

jour=$($test | cut -d "/" -f 1)
mois=$($test | cut -d "/" -f 2)
annee==$($test | cut -d "/" -f 3)


No such file or directory
puis j'ai
j: m: a:
 
après j'ai donc essayé avec


jour=29
mois="Mar"
annee=2004


après j'ai plus rien

mytoo thx, j'essaye çà de suite :D
merci les gars
j'espère que çà fonctionnera
bobuse klaimant> ok, javé pas vu ;)
 
mytoo> pour le cut, ça m'a l'air bon ;)
mytoo ha oui c'est vrai, pas con les cas
on voit l'expèrience derrière
j'essaye çà
et pour le cut
Klaimant

bobuse a écrit :

tu peux aussi faire un truc du genre :


case $mm in
  Jan) mm=1; break;;
  Feb) mm=2; break;;
  ...
esac


C'est pareil, mais c'est plus lisible ;)


 
oui voila des cases :P

bobuse tu peux aussi faire un truc du genre :


case $mm in
  Jan) mm=1; break;;
  Feb) mm=2; break;;
  ...
esac


C'est pareil, mais c'est plus lisible ;)

mytoo

bobuse a écrit :

Sinon avec perl, il doit y avoir un module Time pour convertir les dates, mais ça va pas être de la tarte :/


ha non pas perl  :pt1cable:  non tant pis
je vais faire comme çà, mais est-ce que ce que je viens d'écrire est juste?

bobuse Sinon avec perl, il doit y avoir un module Time pour convertir les dates, mais ça va pas être de la tarte :/
mytoo

Klaimant a écrit :

ok, ben la je pense que pour t'en sortir, tu fais des cut pour récupérer :
28
Mar
2004
 
et apres des cases avec les noms de mois pour récupérer la valeur du mois


c'était ma dernière solution, on ne peut pas faire autrement tu penses?
 
comment je fais pour transformer Mar en 03?
 


date="29/Mar/2004"
jj=$($date | cut -d "/" -f 1)
mm=$($date | cut -d "/" -f 2)
aa=$($date | cut -d "/" -f 3)
if $mm=="Jan" then mm="01"
if $mm=="Fev" then mm="02"
if $mm=="Mar" then mm="03"
...je ne connais pas tout les valeurs date en anglais que çà donne mais je verrais


un truc comme çà?, car je ne connais pas très bien toute les commande de shell

Klaimant ok, ben la je pense que pour t'en sortir, tu fais des cut pour récupérer :
28
Mar
2004
 
et apres des cases avec les noms de mois pour récupérer la valeur du mois
mytoo je la sors d'un log
1.2.3.4 - - [28/Mar/2004:20:30:00 +0200] "TEXTE"  
 
c'est la suite du sujet http://forum.hardware.fr/hardwaref [...] 6943-1.htm
 
Klaimant la date tu l'as sors d'ou ??
mytoo Bonjour,
 
Je sais que çà doit être tout con, mais je n'y arrive pas du tout :(  
 
Voilà mon pb:
ma date: 29/Mar/2004
je veux la transformer en 20040329
 
ceci est un exemple, j'aurais pu très bien prendre 14/May/2004 pour le transformer en 20040514
 
merci
 
(c'est la suite du sujet http://forum.hardware.fr/hardwaref [...] 6943-1.htm)

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)