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 :

[bash] Changer le format d'une date


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Décembre 2022
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [bash] Changer le format d'une date
    TEST DE SCRIPT SHELL

    Soit le fichier de log TRACE.log suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    15/10/2015 ; INF ; Le script modifvalue s’est bien passé
    16/10/2015 ; WARN ; Le script modifvalue a raté des éléments
    18/10/2015 ; ERR ; le script modifvalue a planté
    20/10/2015 ; INF ; Fin normale des traitements
    Faire un script analyse_erreurs.sh qui parcourt ce fichier de log selon le mode passé en paramètre.
    EX : analyse_erreurs.sh INF
    Doit afficher toutes les lignes de type INF en changeant le format date JJ/MM/AAAA en AAAA/MM/JJ

    Ce script doit avoir une log d’exécution dans le répertoire /VAR/log/scripts/analyse_erreurs_HORODATAGE.log. l’horodatage doit être complet à la minute près.
    Je n'arrive pas a trouver la syntax awk ou sed pour convertir la date !
    pouvez vous maider a realisé ceci svp , on me met la pression

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    le shell (bash) et awk sont des langages différents; vérifie bien l'énoncé pour savoir si le script .sh doit être strictement en shell ou s'il peut accepter d'autres langages, et alors pourquoi pas perl ou python... ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Décembre 2022
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    je ne connais pas perl et python
    Si tu Peux me donner un coup de main pour changer ce format ou realisé le script , ca serait vraiment cool
    j'ai la pression de mon service au travail un peu violent la

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    t'aider, oui.
    le faire à ta place, non.

    qu'as-tu déjà essayé ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    Salut,

    avec sed ce n'est pas compliqué.

    1) Ne ressortir que les lignes contenants "; INF ;"
    2) Découper les lignes en $1(jour)/$2(mois)/$3(année) $4(le reste)
    3) Et afficher ces résultats dans le bon sens : $3/$2/$1 $4

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n "/motif de recherche/ s/découpe de la ligne/nouvel version/p"
    Sous Kubuntu 20.04

  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 690
    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 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par dadouille7 Voir le message
    Je n'arrive pas a trouver la syntax awk ou sed pour convertir la date !
    Si ce n'est que cela...
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ echo "15/10/2015" |sed -e "s/^\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3\/\2\/\1/"
    2015/10/15
    Ah oui, ça pique un peu les yeux...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    sed et awk sont surdimensionnés pour une aussi petite tâche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ v="15/10/2015"
    $ ar=( $(IFS='/'; echo $v) ) # ou plus simplement ar=( ${v//\/ } )
    $ echo "${ar[2]}/${ar[1]}/${ar[0]}"
    2015/10/15
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour

    Citation Envoyé par Sve@r Voir le message
    Ah oui, ça pique un peu les yeux...
    Faut dire, aussi, si tu avais utilisé s@@@, les yeux auraient moins piqué.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    Perso, je ferais simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -nr "/; ?INF ?;/ s@([0-9]{2})/([0-9]{2})/([0-9]{4})(.*)@\3/\2/\1\4@p" < TRACE.log
    ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    cat Trace.log
    15/10/2015 ; INF ; Le script modifvalue s’est bien passé
    16/10/2015 ; WARN ; Le script modifvalue a raté des éléments
    18/10/2015 ; ERR ; le script modifvalue a planté
    20/10/2015 ; INF ; Fin normale des traitements
    20/10/2015 ;INF ; Fin normale des traitements
    20/10/2015 ; INF; Fin normale des traitements
     
    sed -nr "/; ?INF ?;/ s@([0-9]{2})/([0-9]{2})/([0-9]{4})(.*)@\3/\2/\1\4@p" < TRACE.log
    2015/10/15 ; INF ; Le script modifvalue s’est bien passé
    2015/10/20 ; INF ; Fin normale des traitements
    2015/10/20 ;INF ; Fin normale des traitements
    2015/10/20 ; INF; Fin normale des traitements
    Sous Kubuntu 20.04

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    de biens beaux efforts , qui n'aideront pas notre ami à apprendre l'usage du shell bash.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    Il avait une pression professionnelle

    S'il veut apprendre il a de quoi faire avec les quelques exemples.
    Sous Kubuntu 20.04

Discussions similaires

  1. Réponses: 7
    Dernier message: 03/07/2007, 11h03
  2. changer le format d'une date
    Par ecirb dans le forum VBScript
    Réponses: 1
    Dernier message: 04/04/2007, 08h25
  3. [XSLT] changer le format d'une date
    Par ami_in55 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 26/03/2007, 09h33
  4. [Dates] changer le format d'une date.
    Par maraly dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2007, 16h17
  5. commant changer le format d'une date?
    Par tribaleur dans le forum ASP
    Réponses: 5
    Dernier message: 02/06/2006, 07h55

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