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 :

calculer sous shell


Sujet :

Shell et commandes GNU

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

    Informations forums :
    Inscription : Août 2011
    Messages : 30
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    Je viens d'essayer comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    awk '{ total[$1] += $2 }
        END { for (i in total) 
                { print "insert into matable values ('" i "', " total[i] ");"}
            } ' fichier.log | mysql -u root -p mabase
    mais je rencontre le message d'erreur suivant :

    ERROR 1054 (42S22) at line 1: Unknown column 'i' in 'field list'

  2. #22
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    C'était un problème de mélange d'apostrophes et de guillemets.
    J'en ai profité pour utiliser printf au lieu de print
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    awk '{ total[$1] += $2 }
        END { for (i in total) 
                { printf ("insert into matable values ('"'%s'"', %s);\n", i , total[i]}
            } ' fichier.log | mysql -u root -p mabase
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #23
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 30
    Points : 39
    Points
    39
    Par défaut
    Super tout fonctionne !

    J'ai juste rajouté une parenthèse ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { printf ("insert into matable values ('"'%s'"', %s);\n")
    Encore merci !

    Bonne journée

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

    Informations forums :
    Inscription : Août 2011
    Messages : 30
    Points : 39
    Points
    39
    Par défaut
    J'aimerai ajouté si il est encore possible, une colonne avec la date.

    Je pense donc à deux solutions :

    Soit dans mon fichier de log je récupère la date ! Donc mon fichier sera de ce type :

    2011/08/25 Machine1 = valeur
    2011/.../... Machine2 = valeur

    et j'insère cela dans ma base.

    Deuxième solution au moment de l'insertion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    awk '{ total[$1] += $2 }
        END { for (i in total) 
                { printf ("insert into matable values ('"'%s'"', %s);\n", i , total[i]}
            } ' fichier.log | mysql -u root -p mabase
    je rajoute la date du système.

    d'après vous qu'elle méthode est possible ?

  5. #25
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 30
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    Alors j'ai réussi à récupérer la date dans mon fichier.log. Celui-ci est maintenant dans le format suivant :

    2011/08/25 Machine1 = valeur
    2011/08/25 Machine2 = valeur
    2011/08/25 Machine3 = valeur
    2011/08/25 Machine4 = valeur
    2011/08/25 Machine5 = valeur
    ....

    Comment puis-je faire prendre en compte cette nouvelle colonne dans la requête ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    awk '{ total[$1] += $2 }
        END { for (i in total) 
                { printf ("insert into matable values ('"'%s'"', %s);\n", i , total[i]}
            } ' fichier.log | mysql -u root -p mabase

  6. #26
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 30
    Points : 39
    Points
    39
    Par défaut
    Alors je pense être sur la bonne voie mais il doit me manquer quelque chose.

    Voici ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cat monfichier.log | awk '{ total[$1 " " $2] += $3 }
        END { for (i in total)
                { printf ("insert into matable values ('"'%s'"', %s);\n"), i , total[i]}
            }' | mysql -u root -p mabase

    Lorsque j'exécute mon script j'ai ce message d'erreur :

    ERROR 1136 (21S01) at line 1: Column count doesn't match value count at row 1
    Dans ma base de données j'ai bien créé le la colonne DATE.

    Avez-vous une idée ?

    Par avance merci

  7. #27
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 44
    Points : 146
    Points
    146
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Bonjour,

    en BASH :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tableauDvaleurs=( $(<valeurs.log) )
    ( IFS="+"; echo $(( ${tableauDvaleurs[*]} )) )
    On peut également procéder ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $(( $(printf "%s+" $(<valeurs.log)) + 0 ))

  8. #28
    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
    oui, c'est bien, mais pas besoin du zéro en mettant le + avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $(( $(printf '+%d' $(<valeurs ) ) ))
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #29
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 44
    Points : 146
    Points
    146
    Par défaut
    @N_BaH : bien vu

  10. #30
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 30
    Points : 39
    Points
    39
    Par défaut
    Merci beaucoup !

    Bonne soirée.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Calculs sous Access 2000
    Par didoo6 dans le forum Access
    Réponses: 1
    Dernier message: 24/04/2006, 14h53
  2. Calcul sous Excel
    Par climz dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/04/2006, 11h43
  3. calcul sous access
    Par ALAMARQU dans le forum VBA Access
    Réponses: 4
    Dernier message: 28/02/2006, 10h03
  4. Question sous shell
    Par Geache dans le forum Linux
    Réponses: 3
    Dernier message: 16/12/2004, 19h32
  5. calcul sous delphi
    Par djedje-08 dans le forum Langage
    Réponses: 5
    Dernier message: 08/02/2003, 17h39

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