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

Linux Discussion :

[sed] Aide pour récupérer des dates a partir du numero de semaine.


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 39
    Points : 33
    Points
    33
    Par défaut [sed] Aide pour récupérer des dates a partir du numero de semaine.
    Bonjour,

    voila, j'ai des fichiers avec des numéros de semaine de l'année en cours et je voudrais le renommer avec la date du lundi et la date du vendredi.

    Par exemple:
    Semaine_41.pdf

    deviendrai:

    08-10_au_12-10_Sem41.pdf
    Je me doute qu'il faut utiliser la fonction cal et sed , oui mais comment


    La commande:
    ncal -w
    me renvoie:
    octobre 2007
    lu 1 8 15 22 29
    ma 2 9 16 23 30
    me 3 10 17 24 31
    je 4 11 18 25
    ve 5 12 19 26
    sa 6 13 20 27
    di 7 14 21 28
    40 41 42 43 44
    Donc par exemple pour le fichier Semaine_44.pdf il y aura des problemes vu qu'il n'y a pas de vendredi dans le meme mois, il faudrait donc afficher 2 mois consécutifs avec les numeros de semaine, or

    ncal -3w
    et
    cal -3w
    ne fonctionnent pas !

    En outre cette fonction affiche le calendrier du mois en cour avec le numéro de semaine, mais moi je cherche en fait a afficher tout les jours de la semaine qui correspondent a un numero de semaine. Suis je compréhensible ? Est-ce possible ?

    De plus pourriez vous m'aider dans la regexpr de sed SVP, car jarrive a transformer Semaine_44.pdf en 44, mais apres récuper les dates dans le calendrier c'est une autre histoire.

    Je remercie d'avance tous ceux qui m'aideront.

    Bonne journée

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Points : 95
    Points
    95
    Par défaut avec date
    Bonjour,

    je fais mon malin car je donne une version avec date (vu que j'étais en train de bidouiller dessus) ...

    La commande date --date "x day" +%d-%m permet d'afficher la date d'aujourd'hui + x jours dans le format jour-mois.
    Je fais donc cela avec le Lundi et le Vendredi de la semaine concernée, je mets les résultats dans 2 variables et je peux créer le nouveau nom de fichier.

    Inconvénient:
    fonctionne pour l'année en court seulement

    Avantages :
    - ça ne dépend pas de la langue (utiliser sed pourra peut-être révéler un tel inconvénient)
    - ça ne dépend pas du format de sortie de ncal
    - c'est bourin et j'aime ça !

    Je réfléchie à une version avec sed.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #!/bin/bash
    
    # boucle sur la liste des fichiers qui nous intéresse
    for filename in `ls Semaine_*.pdf` 
      do
    
    # récupération du no de la semaine
      sem=` echo ${filename} | cut -f2 -d_  | cut -f1 -d.` 
    
    # no du jour d'aujourd'hui
      Jactuel=`date +%j`
    
    # no du Lundi (J1) et du Vendredi (J2) de la semaine traitée
      let J1=7*$sem-6
      let J2=7*$sem-2
    
    # écarts de ces jours par rapport au jour actuel
      let ecart1=$J1-$Jactuel
      let ecart2=$J2-$Jactuel
    
    # écriture sous forme jour-mois du Lundi et du Vendredi
      Mon=`date --date "${ecart1} day" +%d-%m`
      Fri=`date --date "${ecart2} day" +%d-%m`
    
    # modification du nom du fichier
      mv $filename "${Mon}_au_${Fri}_Sem${sem}.pdf"
    
    done

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Points : 95
    Points
    95
    Par défaut avec date
    Au fait, j'aurais pu faire plus simple si je savais comment afficher directement la date du jour numéro j dans le format jour-mois avec une commande du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    date --date "j" +%d-%m
    Donc si quelqu'un a une solution je suis preneur.
    (...de toute manière je n'ai pas trop cherché l'optimisation ici )

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 39
    Points : 33
    Points
    33
    Par défaut
    Merci beaucoup To-Ma !!!!

    Ca marche impécablement bien !!!
    De plus moi que ce soit bourrin ou pas cela met égal tant que ca marche et d'ailleurs pourquoi dis tu que c'est bourrin ?

    En plus ta solution n'utilise pas SED ce qui m'enleve une grosse épine du pied, j'ai jamais compris pourquoi la synthaxe des regex etait pas la meme en php qu'en bash.

    Sinon pour le probleme de l'année en cour ce n'est pas important, parceque en fait ce script sert a découper des emploi du temps de la semaine suivante et les placer dans un fichier nommé avec les jours. Donc au pire la semaine de janvier je la ferai manuellement

    J'ai essayé de chercher pour trouver la date du n-ème jour de l'année moi aussi mais sans succès, il n'existe peut etre pas de commande directe.
    Désolé de e pas pouvoir t'aider plus.


    En tout cas, merci encore pour ton aide, bonne continuation.
    @+

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 66
    Points : 95
    Points
    95
    Par défaut bourin
    Content que ça convienne

    Un code "bourin" pour moi est un code écrit brutalement, sans trop de réflexion. En ce qui me concerne, en programmation shell, ça m'arrive quand je suis en train d'expérimenter une commande particulière , ici date...

    Dans notre cas je pense qu'on pourrait trouver une solution avec moins de lignes de commandes, mais bon, ce n'est qu'une intuition !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/12/2013, 14h06
  2. Réponses: 4
    Dernier message: 29/03/2011, 17h13
  3. Aide pour convertir des dates
    Par Devilstuff dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 18/01/2010, 23h19
  4. Besoin d'aide avec une requete pour récupérer des hyperliens
    Par scaleo dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 21/12/2007, 12h56
  5. [MySQL] je cherche une aide pour récupérer des champs d'une base de donnée
    Par maya24 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/09/2007, 12h14

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