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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    Par défaut calculer sous shell
    Bonjour,

    J'ai mis en place un script qui récupère des valeurs dans un fichier de log puis les envoies dans un autre fichier nommé "valeurs.log "

    Exemple de fichier valeurs.log :

    10598
    5
    245
    234
    ...
    j'aimerai créer un script qui additionne toutes ces valeurs.

    j'ai essayé cette commande :

    cat valeurs.log | awk '{sum+=$1}'

    mais aucun résultat.

    Pouvez-vous m'aider ?

    Par avance merci

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '{ sum+=$1 } END { print sum }' valeurs.log

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 134
    Par défaut
    Pour avoir un résultat, il faut l'imprimer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat valeurs.log | awk 'BEGIN{sum=0}{sum+=$1}END{print sum}'
    edit : GRILLED
    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.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    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 134
    Par défaut
    Pour le fun, on peut aussi le faire en shell pur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum=0 ; while read i ; do (( sum+=i )) ; done < valeurs.log; echo $sum
    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.

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

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

    en BASH :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tableauDvaleurs=( $(<valeurs.log) )
    ( IFS="+"; echo $(( ${tableauDvaleurs[*]} )) )
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre éprouvé
    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
    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 ))

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 657
    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.

  8. #8
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Avec dc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dc -f valeurs.log -e "0 0[+z1<a]salaxp

  9. #9
    Membre averti
    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
    Par défaut
    Bonjour,

    Merci beaucoup pour vos réponses !

    J'ai désormais le choix ! Je vais immédiatement tester tout ça !

    Encore merci et bonne soirée

  10. #10
    Membre averti
    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
    Par défaut
    Re,

    Les commandes ci-dessus fonctionnent parfaitement ! Encore merci !

    Désormais j'arrive à extraire de mon fichier de log la liste nom_machine -> valeur

    exemple de fichier :

    machine1 256
    machine1 94597
    machine3 41123
    machine2 3
    machine1 36
    ....
    j'aimerai comme précédemment faire la sommes de toutes les valeurs mais par machine ! Pour avoir comme résultat

    machine1 = ...
    machine2 = ...
    machine3 = ...
    Est-ce possible avec les commandes précédentes ?

  11. #11
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Dans ce cas c'est awk le plus adapté, puisqu'il dispose de tables de hachage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '{ total[$1] += $2 } END { for (i in total) { print i " = " total[i] } }'

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

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