[SCRIPT SHELL] Convertion de date

Convertion de date [SCRIPT SHELL] - Linux et OS Alternatifs

Marsh Posté le 14-05-2004 à 18:45:04    

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)


Message édité par mytoo le 14-05-2004 à 18:47:12

---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 18:45:04   

Reply

Marsh Posté le 14-05-2004 à 18:45:46    

la date tu l'as sors d'ou ??


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 14-05-2004 à 18:48:09    

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
 


---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 18:49:10    

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


Message édité par Klaimant le 14-05-2004 à 18:49:27

---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 14-05-2004 à 18:53:53    

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


Message édité par mytoo le 14-05-2004 à 18:55:21

---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 18:58:46    

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

Reply

Marsh Posté le 14-05-2004 à 18:59:50    

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?


---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 19:02:47    

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 ;)

Reply

Marsh Posté le 14-05-2004 à 19:03:31    

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


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 14-05-2004 à 19:05:14    

ha oui c'est vrai, pas con les cas
on voit l'expèrience derrière
j'essaye çà
et pour le cut


---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 19:05:14   

Reply

Marsh Posté le 14-05-2004 à 19:06:56    

klaimant> ok, javé pas vu ;)
 
mytoo> pour le cut, ça m'a l'air bon ;)

Reply

Marsh Posté le 14-05-2004 à 19:08:24    

thx, j'essaye çà de suite :D
merci les gars
j'espère que çà fonctionnera


---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 19:24:44    

: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


---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 19:29:36    


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


Message édité par Klaimant le 14-05-2004 à 19:30:05

---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 14-05-2004 à 19:33:44    

Klaimant a écrit :

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


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


---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 19:34:42    

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


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 14-05-2004 à 19:38:30    

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:


Message édité par mytoo le 14-05-2004 à 19:41:05

---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 19:40:15    

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


Message édité par Klaimant le 14-05-2004 à 19:41:23

---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 14-05-2004 à 19:45:29    

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


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
Reply

Marsh Posté le 14-05-2004 à 19:45:34    

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


---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 19:47:47    

zaib3k a écrit :

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


oki


---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 19:51:07    

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


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
Reply

Marsh Posté le 14-05-2004 à 19:58:46    

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


---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 20:01:19    

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 ?


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 14-05-2004 à 20:09:37    

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


Message édité par mytoo le 14-05-2004 à 20:14:50

---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 20:10:31    

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}"


Message édité par mytoo le 14-05-2004 à 20:33:15

---------------
La connaissance se partage
Reply

Marsh Posté le 14-05-2004 à 20:28:20    

Klaimant a écrit :

Pourquoi des acolades ?


 
copié/collé de mytoo :D


---------------
Le droit à la différence s'arrête là où ça commence à m'emmerder sérieusement.
Reply

Marsh Posté le 14-05-2004 à 20:32:37    

zaib3k a écrit :

copié/collé de mytoo :D


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


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 14-05-2004 à 20:33:43    

VOUS POUVEZ FERMER CE SUJET


---------------
La connaissance se partage
Reply

Marsh Posté le 15-05-2004 à 00:27:33    

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


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 15-05-2004 à 11:39:21    

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?


---------------
La connaissance se partage
Reply

Marsh Posté le 15-05-2004 à 13:26:55    

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.


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 15-05-2004 à 14:13:39    

echo $DATEACONVERTIR | tr -d '/' | xargs date +"%Y%m%d" -d
 
ca allait beaucoup plus vite que perl ou bash :D
man date ;)

Reply

Marsh Posté le 01-10-2007 à 17:09:00    

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

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed