Conversion date aaaammjj en jj/mm/aaaa
Résolu/Fermé
Bu1979
-
1 oct. 2007 à 17:36
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 1 oct. 2007 à 20:13
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 1 oct. 2007 à 20:13
A voir également:
- Convertir aaaammjj en jj/mm/aaaa
- Convertir youtube en mp3 avec audacity - Guide
- Convertir youtube en mp3 forum ✓ - Forum Logiciels
- Format date excel jj/mm/aaaa ✓ - Forum Excel
- Convertir pdf en word excel gratuit - Guide
- Jj/mm/aaaa ✓ - Forum Mail
11 réponses
La commande a l'air correcte, mais quand tu mets /fichier/input, c'est le fichier dans lequel il va lire les renseignements ou il va les ecrire?
Car je pensais rajouter:
cat "Fichier_Input" | awk -F ';' '{yyyy=`cut -c 1-4 $4`; mm=`cut -c 5-6 $4`; dd=`cut -c 7-8 $4`; print dd "/" mm "/" yyyy}' > fichier_output
mais ca ne marche pas.. erreur de syntaxe apparemment
Car je pensais rajouter:
cat "Fichier_Input" | awk -F ';' '{yyyy=`cut -c 1-4 $4`; mm=`cut -c 5-6 $4`; dd=`cut -c 7-8 $4`; print dd "/" mm "/" yyyy}' > fichier_output
mais ca ne marche pas.. erreur de syntaxe apparemment
Merci a vous deux, cependant il faut aussi que je vous precise que je travaille sur Solaris SUN, en ksh, et que je pense qu'il y a un souci de syntaxe avec les commandes sed, et date.
J'ai une erreur sur les options, car -d n'existe pas et -i non plus.
J'ai une erreur sur les options, car -d n'existe pas et -i non plus.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
1 oct. 2007 à 19:06
1 oct. 2007 à 19:06
essaie
$ cat fichier 233256.00;25663325.00;PKR;20070920; 5153743.43;4831391.53;HKD;20070921; 5153743.43;4831391.53;HUF;20070922; $ sed 's/\(.*\)\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\);$/\1\4\/\3\/\2/' fichier>resultat $ cat resultat 233256.00;25663325.00;PKR;20/09/2007 5153743.43;4831391.53;HKD;21/09/2007 5153743.43;4831391.53;HUF;22/09/2007 lami20j@debian:~/trash$
Super Lami ca fonctionne presque, a une exception pres:
Dans ce cas:
4569871357.64;9936483272.20;GBP;20070921;F
Lorsque l'on a une donnee supplementaire derriere la date, cela ne la convertie pas...
Dans ce cas:
4569871357.64;9936483272.20;GBP;20070921;F
Lorsque l'on a une donnee supplementaire derriere la date, cela ne la convertie pas...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Chacual
Messages postés
230
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
15 octobre 2007
150
1 oct. 2007 à 17:51
1 oct. 2007 à 17:51
Est-ce que cette commande :
awk -F ';' '{yyyy=`cut -c 1-4 $4`; mm=`cut -c 5-6 $4`; dd=`cut -c 7-8 $4`; print dd "/" mm "/" yyyy}' /fichier/input
t'affiche les dates au format voulu ?
awk -F ';' '{yyyy=`cut -c 1-4 $4`; mm=`cut -c 5-6 $4`; dd=`cut -c 7-8 $4`; print dd "/" mm "/" yyyy}' /fichier/input
t'affiche les dates au format voulu ?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
1 oct. 2007 à 18:24
1 oct. 2007 à 18:24
Salut,
Avant toute chose fais une copie de sauvegarde de ton fichier. :
Avant toute chose fais une copie de sauvegarde de ton fichier. :
while read line do DATE=$(awk -F";" '{ print $4 }' <<<$line) NEWDATE=$(date -d "$DATE" '+%d/%m/%Y') sed -i "s#$DATE#$NEWDATE#" ton_fichier ; done < ton_fichierCe qui donne :
[tmpfs]$ cat plop 233256.00;25663325.00;PKR;20070920; 5153743.43;4831391.53;HKD;20070921; 5153743.43;4831391.53;HUF;20070922; [tmpfs]$ while read line; do DATE=$(awk -F";" '{ print $4 }' <<<$line); NEWDATE=$(date -d "$DATE" '+%d/%m/%Y'); sed -i "s#$DATE#$NEWDATE#" plop ; done < plop [tmpfs]$ cat plop 233256.00;25663325.00;PKR;20/09/2007; 5153743.43;4831391.53;HKD;21/09/2007; 5153743.43;4831391.53;HUF;22/09/2007; [tmpfs]$;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
1 oct. 2007 à 18:51
1 oct. 2007 à 18:51
Salut,
~/trash$ cat fichier 233256.00;25663325.00;PKR;20070920; 5153743.43;4831391.53;HKD;20070921; 5153743.43;4831391.53;HUF;20070922; ~/trash$ sed -i.orig 's/\(.*\)\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\);$/\1\4\/\3\/\2/' fichier ~/trash$ cat fichier 233256.00;25663325.00;PKR;20/09/2007 5153743.43;4831391.53;HKD;21/09/2007 5153743.43;4831391.53;HUF;22/09/2007 ~/trash$ cat fichier.orig 233256.00;25663325.00;PKR;20070920; 5153743.43;4831391.53;HKD;20070921; 5153743.43;4831391.53;HUF;20070922;ou
233256.00;25663325.00;PKR;20070920; 5153743.43;4831391.53;HKD;20070921; 5153743.43;4831391.53;HUF;20070922; ~/trash$ sed -i.orig -r 's/(.*)([0-9]{4})([0-9]{2})([0-9]{2});$/\1\4\/\3\/\2/' fichier ~/trash$ cat fichier 233256.00;25663325.00;PKR;20/09/2007 5153743.43;4831391.53;HKD;21/09/2007 5153743.43;4831391.53;HUF;22/09/2007 ~/trash$ cat fichier.orig 233256.00;25663325.00;PKR;20070920; 5153743.43;4831391.53;HKD;20070921; 5153743.43;4831391.53;HUF;20070922;
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
1 oct. 2007 à 19:07
1 oct. 2007 à 19:07
Re-
Prends la commande de lami20j et passe par un fichier temporaire alors :
Prends la commande de lami20j et passe par un fichier temporaire alors :
sed 's/\(.*\)\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\);$/\1\4\/\3\/\2;/' < fichier_entrée > fichier_sortie mv fichier_sortie fichier_entrée;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
1 oct. 2007 à 19:19
1 oct. 2007 à 19:19
Lorsque l'on a une donnee supplementaire derriere la date, cela ne la convertie pas...
et si on a deux, trois, quatre, etc...
il faut préciser la structure de ton fichier pour donner une solution exacte
si la date se trouve toujours dans le 4 champs(le séparateur ;) alors fait comme ça
et si on a deux, trois, quatre, etc...
il faut préciser la structure de ton fichier pour donner une solution exacte
si la date se trouve toujours dans le 4 champs(le séparateur ;) alors fait comme ça
$ cat fichier 233256.00;25663325.00;PKR;20070920;FFF 5153743.43;4831391.53;HKD;20070921; 5153743.43;4831391.53;HUF;20070922; $ sed 's/\(.*;.*;.*;\)\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1\4\/\3\/\2/' fichier>resultat $ cat resultat 233256.00;25663325.00;PKR;20/09/2007;FFF 5153743.43;4831391.53;HKD;21/09/2007; 5153743.43;4831391.53;HUF;22/09/2007;
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
1 oct. 2007 à 20:13
1 oct. 2007 à 20:13
De rien ;-)