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 :

Moyenne des lignes avec awk


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2013
    Messages : 3
    Par défaut Moyenne des lignes avec awk
    Bonjour,
    Je dispose d'un fichiers de données de ce type:
    1873 63 14.2306 -17.0408 221.73 269.07 252.39 268.13 279.89
    1874 59 14.2446 -17.7308 217.45 268.42 249.10 265.36 279.17
    1874 60 14.2797 -17.5708 217.21 267.75 249.06 266.29 279.87
    1874 61 14.3152 -17.4084 217.00 266.67 250.07 266.49 280.40
    1874 62 14.3511 -17.2433 217.99 267.32 252.74 268.72 281.25
    1874 63 14.3875 -17.0754 231.22 271.89 251.32 269.88 280.61
    1875 58 14.3666 -17.9237 216.37 267.75 249.48 264.63 279.12
    1875 59 14.4014 -17.7658 216.24 267.23 250.17 266.29 279.38
    1875 60 14.4364 -17.6057 215.72 266.93 249.12 265.38 280.97
    1875 61 14.4719 -17.4431 215.59 265.90 250.35 266.84 281.03
    ..........................................
    ...................................

    Il est donc organisé en 9 colonnes.
    Je souhaite faire les moyennes des données colonne par colonne, et cela à partir de la 5eme colonne (du 5 au 9 donc).
    Et enfin écrire ces moyennes à la fin du fichier.

    Merci d'avance pour votre aide.
    Bien cordialement.

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

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

    ce sujet à déjà été traité sur le forum DVP.

    à lire : Comment lire/parser un fichier en shell
    + les liens ci-dessous :
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre expérimenté
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 248
    Par défaut
    bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk 'BEGIN {n = 0} {for (i=5; i <=9; i++) {a[i] = a[i] + $i} n++}  END { for (i=5; i <=9; i++) {printf("%s ", a[i] / n)} print ""}'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ~/t[noop]:cat toto
    a a a a 10 20 30 40 50
    b b b b 1 2 3 4 5
    ~/t[noop]:
     
    ~/t[noop]:awk 'BEGIN {n = 0} {for (i=5; i <=9; i++) {a[i] = a[i] + $i} n++}  END { for (i=5; i <=9; i++) {printf("%s ", a[i] / n)} print ""}' toto
    5,5 11 16,5 22 27,5 
    ~/t[noop]:

  4. #4
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Quelque chose de générique comme ceci devrait faire l'affaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    awk '{ for( i=1 ; i<=NF ; i++ ) {  tab[i]=tab[i]+$i   }     } END  {  for( i=1 ; i<=NF ; i++ ) { print " Field Number : " i   " - Moyenne : " tab[i]/NR   }   }' FICHIER.TXT

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2013
    Messages : 3
    Par défaut
    Merci à Vous.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 282
    Par défaut
    Bonsoir,

    Si je peux, Becket tu as donné la procédure pour la moyenne mais pour la somme. Comment dois je m'y prendre.

    Merci

  7. #7
    Invité
    Invité(e)
    Par défaut
    Tu enlève le "/NR" dans sa commande

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

Discussions similaires

  1. [RegEx] Changer ordre des lignes avec SQL et PHP
    Par kifouillou dans le forum Langage
    Réponses: 16
    Dernier message: 20/03/2008, 16h27
  2. [Jlist] faire des lignes avec boutons
    Par matt22 dans le forum Composants
    Réponses: 1
    Dernier message: 27/11/2006, 16h21
  3. Comment changer les couleurs des lignes avec displaytag
    Par rlnd23 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/10/2006, 13h52
  4. Lire un fichier ligne par ligne avec Awk
    Par Krispy dans le forum Linux
    Réponses: 8
    Dernier message: 07/09/2006, 15h14
  5. [Requete] Comment ignorer des lignes avec un LOAD DATA
    Par frangin2003 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2005, 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