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] Calcul et affichage de l'évolution de 2 colonnes de 2 fichiers


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 18
    Points
    18
    Par défaut [bash] Calcul et affichage de l'évolution de 2 colonnes de 2 fichiers
    Bonjour,

    J'ai un fichier qui est généré chaque jour et qui a pour nom <date>_results.

    les fichiers ont tous le même format qui est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    article        quantité      prix
    article1       10             50
    article2       90             12
    article3       10             50
    article4       34             50
    article5       56             87

    je souhaite comparer pour chaque article l'évolution de la quantité et du prix entre la date du jour et la veille et l'afficher de la sorte (l'affichage peut être différent tant que je vois l'évolution):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    article        quantité      prix
    article1       34 (+24)      50(=)
    article2       85 (-5)       13 (+1)
    article3       10 (=)        40 (-10)
    article4       64 (+30)      50(=)
    article5       56 (=)        87 (=)
    Pourriez-vous svp m'aider à faire le script en bash qui permet d'obtenir ce résultat ?
    D'avance merci pour votre aide !

  2. #2
    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 458
    Points
    13 458
    Par défaut
    Bonjour

    Un exemple pour nourrir ta réflexion :
    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
    $ cat 10.05.2022.results.txt 
    article        quantité      prix
    article1       10             50
    article2       90             12
    article3       10             50
    article4       34             50
    article5       56             87
    $ cat 11.05.2022.results.txt 
    article        quantité      prix
    article1       34             50
    article2       85             13
    article3       10             40
    article4       64             50
    article5       56             87
    $ awk '(FNR==NR){qte[$1]=$2; p[$1]=$3; next;} {print $1,$2,"("$2-qte[$1]")",$3,"("$3-p[$1]")";}' 10.05.2022.results.txt 11.05.2022.results.txt 
    article quantité (0) prix (0)
    article1 34 (24) 50 (0)
    article2 85 (-5) 13 (1)
    article3 10 (0) 40 (-10)
    article4 64 (30) 50 (0)
    article5 56 (0) 87 (0)
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 101
    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 101
    Points : 4 446
    Points
    4 446
    Par défaut
    bonjour

    la première question serait: toujours les mêmes articles (je doute)? eventuellement, toujours dans même ordre ?
    $moi= ( !== ) ? : ;

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $ awk '(FNR==NR){qte[$1]=$2; p[$1]=$3; next;} {print $1,$2,"("$2-qte[$1]")",$3,"("$3-p[$1]")";}' 10.05.2022.results.txt 11.05.2022.results.txt 
    article quantité (0) prix (0)
    article1 34 (24) 50 (0)
    article2 85 (-5) 13 (1)
    article3 10 (0) 40 (-10)
    article4 64 (30) 50 (0)
    article5 56 (0) 87 (0)
    C'est top cette commande et "simple" en plus ! ça marche nickel j'ai testé !
    Est-ce que ca fonctionne si l'ordre des articles est différents dans les 2 fichiers ? Merci !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par papajoker Voir le message
    bonjour

    la première question serait: toujours les mêmes articles (je doute)? eventuellement, toujours dans même ordre ?
    Bonne question, aujourd'hui c'est fixe, mais ça pourrait changer à l'avenir (articles et ordres). Du coup intéressé pour anticiper et avoir un code qui marche dans ces cas là.

    Merci pour le retour !

  6. #6
    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 458
    Points
    13 458
    Par défaut
    Citation Envoyé par alberick Voir le message
    Est-ce que ca fonctionne si l'ordre des articles est différents dans les 2 fichiers ? Merci !
    Prends le temps d'étudier le code pour adapter à ton besoin. La première partie du script (jusqu'à "next;") s'applique au premier fichier donné en paramètres. On stocke les quantités et les prix dans 2 tableaux associatifs. Donc l'ordre n'a aucune importance. La seconde partie du script s'applique aux fichiers suivants. On compare aux valeurs des tableaux et affiche le résultat final.

    Il y a effectivement la question des articles présents dans l'un et pas dans l'autre à traiter.

    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Top, merci pour le retour !

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 01/07/2009, 11h49
  2. [WSS3]Colonnes calculées et affichage
    Par sboober dans le forum SharePoint
    Réponses: 1
    Dernier message: 16/03/2009, 13h13
  3. Calcul et affichage dans textbox multiligne
    Par Cheorches dans le forum VB.NET
    Réponses: 3
    Dernier message: 03/08/2007, 16h35
  4. Calcul et affichage d'une moyenne
    Par AurelieB dans le forum Access
    Réponses: 5
    Dernier message: 30/07/2007, 14h15
  5. [VB6]calcul et affichage d'une pente
    Par fahmichebaane dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 07/03/2006, 16h34

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