IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Commande sed pour remplacer les points des dates par des slash


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Points : 346
    Points
    346
    Par défaut Commande sed pour remplacer les points des dates par des slash
    Hello tout le monde,

    Dans mon fichier j'ai des dates sous la forme dd.mm.yyyy que je voudrais transformer en dd/mm/yyyy
    voici un exemple de ligne dans mon fichier :Nom : file.jpg
Affichages : 124
Taille : 39,1 Ko

    J'ai essayé ceci mais ça ne fonctionne absolument pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e 's/\([0-9]{2}\).\([0-9]{2}\).\([0-9]{4}\)\/\([0-9]{2}\)\/\([0-9]{2}\)\/\([0-9]{4}\)/g'
    Est-ce que vous pouvez éclairer ma lanterne svp

    Un tout grand merci

    Greg

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 271
    Points : 13 536
    Points
    13 536

  3. #3
    Membre averti Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Points : 346
    Points
    346
    Par défaut
    Citation Envoyé par Flodelarab Voir le message

    Bonjour Flodelarab et merci de ta réponse.
    Le problème c'est que tous les '.' du fichier sont remplacés par des '/' mais ce n'est pas ce que je veux.

    Je veux remplacer les '.' uniquement quand il s'agit de cette suite : dd.mm.yyyy

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 271
    Points : 13 536
    Points
    13 536
    Par défaut
    Citation Envoyé par zemeilleurofgreg Voir le message
    Je veux remplacer les '.' uniquement quand il s'agit de cette suite : dd.mm.yyyy
    Et bien, fais-le. Courage !

    NB: dans ton premier message, tu n'as même pas dit à sed par quoi il fallait remplacer la regex.

  5. #5
    Membre averti Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Points : 346
    Points
    346
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Et bien, fais-le. Courage !

    NB: dans ton premier message, tu n'as même pas dit à sed par quoi il fallait remplacer la regex.
    Eh bien ... merci de ta bienveillance !
    Mais je crois que le sujet de cette discussion est "Commande sed pour remplacer les points des dates par des slash" --> explicite non ?

    Mais bon soit... Merci à ceux qui voudrons bien m'apporter leur aide ;-)

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 728
    Points : 31 050
    Points
    31 050
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par zemeilleurofgreg Voir le message
    J'ai essayé ceci mais ça ne fonctionne absolument pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e 's/\([0-9]{2}\).\([0-9]{2}\).\([0-9]{4}\)\/\([0-9]{2}\)\/\([0-9]{2}\)\/\([0-9]{4}\)/g'
    Est-ce que vous pouvez éclairer ma lanterne svp
    Tu as deux soucis dans ta commande
    1. les accolades qui symbolisent la répétition doivent être protégées
    2. les mémoires des éléments trouvés (les éléments parenthésés) ne sont pas réutilisées. Or si on mémorise un pattern c'est à priori pour le réutiliser.

    On peut aussi parler du "point" qui symbolise "n'importe quoi" et qui pourrait être source de conflit...
    sed -e "s/\([0-9]\{2\}\)\.\([0-9]\{2\}\)\.\([0-9]\{4\}\)~/\1\/\2\/\3~/g" le_fichier.

    PS: je me suis calé sur le "~" qui semble suivre toutes les dates (plus on donne de précisons mieux c'est) mais c'est facultatif...

  7. #7
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 209
    Points : 4 687
    Points
    4 687
    Par défaut
    bonjour
    Citation Envoyé par Sve@r Voir le message
    plus on donne de précisons mieux c'est
    Mais vu ce qu'il donne (Merci pour la copie écran ), on peut opter aussi pour un peu plus de simplicité (s'il peut la modifier dans 1 an)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -E "s|([0-9])\.([0-9]{2})\.|\1\/\2\/|g"

  8. #8
    Membre averti Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Points : 346
    Points
    346
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Tu as deux soucis dans ta commande
    1. les accolades qui symbolisent la répétition doivent être protégées
    2. les mémoires des éléments trouvés (les éléments parenthésés) ne sont pas réutilisées. Or si on mémorise un pattern c'est à priori pour le réutiliser.

    On peut aussi parler du "point" qui symbolise "n'importe quoi" et qui pourrait être source de conflit...
    sed -e "s/\([0-9]\{2\}\)\.\([0-9]\{2\}\)\.\([0-9]\{4\}\)~/\1\/\2\/\3~/g" le_fichier.

    PS: je me suis calé sur le "~" qui semble suivre toutes les dates (plus on donne de précisons mieux c'est) mais c'est facultatif...
    Hello Sve@r,

    Un tout grand merci pour ta réponse qui m'a permis d'apporter la solution à mon problème mais aussi et surtout à tes explications grâce auxquelles je comprend maintenant un peu mieux la mécanique de la commande sed.


  9. #9
    Membre averti Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Points : 346
    Points
    346
    Par défaut
    Citation Envoyé par papajoker Voir le message
    bonjour

    Mais vu ce qu'il donne (Merci pour la copie écran ), on peut opter aussi pour un peu plus de simplicité (s'il peut la modifier dans 1 an)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -E "s|([0-9])\.([0-9]{2})\.|\1\/\2\/|g"
    Merci aussi à toi papajoker,

    effectivement on peut se passer de l'année et utiliser un autre délimiteur, ce qui simplifie l'écriture

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment trouver les points des inflections pour une courbe
    Par mihaispr dans le forum Mathématiques
    Réponses: 3
    Dernier message: 30/09/2009, 14h25
  2. [CSV] Remplacer les points par des virgules
    Par johnkro dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2008, 19h25
  3. commande sed pour supprimer des commentaires
    Par Garulfo dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 08/03/2008, 19h09
  4. Encore une histoire pour remplacer les points
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/08/2007, 11h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo