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 :

ksh manipulation d'une date


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 51
    Par défaut ksh manipulation d'une date
    Bonjour , voici dans un fichier , j'ai un champ qui correspond à une date et j'aimerais rajouter 12 mois à chaque fois

    voir le détail de mon fichier :
    ....
    2107707012 03.01.2017 nom prenom adresse
    2107707012 03.02.2018 nom prenom adresse
    2107707012 03.03.2019 nom prenom adresse
    2107707012 03.05.2019 nom prenom adresse
    2107707012 03.06.2020 nom prenom adresse
    2107707012 03.08.2021 nom prenom adresse
    .....

    j'aimerais rajouter 12 mois à chaque date et en plus il faut que je renseigne le dernier jour du mois dans la future date, par ex :

    prenons la première ligne , je dois retourner 31.01.2018 au lieu de 03.01.2017.

    je sais qu'avec test=`date +%m.%Y -d "+12 month"` , je peux retourner la date systeme + 12 mois , mais comment on manipule une date dans un fichier text .
    Merci de votre aide .

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 654
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    Bonjour,

    Comment lire un fichier en shell
    on verra pour la suite quand tu auras déjà fait ça.

    tu peux aussi t'avancer un peu en cherchant comment convertir les dates avec la commande date...
    il y a un piège.

    edit : au fait, pourquoi KSH ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 51
    Par défaut
    merci pour ton premier retour , pour lire un fichier , ça je sais faire mes fichiers sont dans un env linux/unix et je dois livrer un ksh pour les modifier .
    Si tu as une idée sur l'ajout de 12 mois en précisant à chaque fois le dernier jour du mois ça m'aiderait bcp

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 654
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date -d 'ladate +13months -1day' +'format'
    mais il faut changer le jour pour 01.

    edit : au fait, pourquoi KSH ?
    edit: correction 12months -> 13months
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 347
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date -d 'ladate +12months -1day' +'format'
    mais il faut changer le jour pour 01.
    Bizarre, j'aurai mis +13months au lieu de +12months ...

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 654
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    oui, j'm'ai gourré en recopiant. c'est bien 13 mois.

    j'édite. merci.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2010
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 51
    Par défaut
    Merci pour retour
    pour ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date -d '01/01/2021 +12months -1day' +'%d.%m.%y'
    j'ai bien la bonne date et le bon jour : : 31.12.21 , en revanche pour les autres mois de l 'année il ne m'affiche pas le dernier jour du mois
    petite question , comment je peux afficher l'année sur 4 au lieu de 2 , je souhaiterais 2021 et non 21 , j'ai trouvé c'est avec Y au lieu de y
    la même commande avec des '.' au lieu '/' cela ne fonctionne pas, en effet ma date dans le fichier est avec des . et non / :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date -d '01.01.2021 +12months -1day' +'%d.%m.%y'
    voici l 'erreur :
    date: invalid date ‘01.01.2021 +12months -1day’ .
    tu as une idée
    je souhaiterais variabiliser la date avec un truc comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test_date=01/01/2020
    date -d '"$test_date" +12months -1day' +'%d.%m.%y'
    voici mon erreur
    date: invalid date ‘"$test_date" +12months -1day’
    tu as une idée , encore désolé pour mes questions mais je ne maitrise pas trop le ksh .

    Pourquoi le ksh : mes fichiers sont sous linux .

  8. #8
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 654
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    pour avoir l'année sur quatre chiffres, réfère-toi au man.

    dans ton fichier, les dates sont au format jj.mm.aaa, il faut remplacer les . par des /. Ça pourrait se faire avec un Remplacement de paramètres.
    mais, étant donné qu'il faut aussi inverser le mois et le jour... il faut "spliter" le champ date.
    Code POSIX : Sélectionner tout - Visualiser dans une fenêtre à part
    newDate=$(echo "$champDate" | { IFS='.' read -r j m a; echo "$m/$j/$a";})

    sur* Linux, le shell le plus courant, c'est bash.

    --
    * l'ordi est sous Linux. Les applications, et les fichiers, eux, sont sur Linux.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. Manipulations sur une date
    Par SISGI dans le forum Langage SQL
    Réponses: 6
    Dernier message: 24/07/2013, 17h19
  2. question sur manipulation d'une date
    Par decisionnel dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 12/07/2009, 22h26
  3. [Java] Manipulation d'une Date
    Par alex2746 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 22/10/2008, 09h22
  4. Manipuler le format retourné pour une date.
    Par BlackMinou dans le forum Oracle
    Réponses: 3
    Dernier message: 05/04/2006, 18h01
  5. [C++] Débutant: manipuler une date
    Par hobotalker dans le forum MFC
    Réponses: 1
    Dernier message: 28/11/2005, 16h00

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