[gawk/shell] moyenne de nombres réels

Fermé
histoirede - 5 déc. 2007 à 13:53
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 5 déc. 2007 à 15:46
Bonjour,

j'ai un fichier de 5 colonnes avec des nombrtes réels, je souhaite faire une moyenne simple par ligne de ces 5 colonnes.

ma ligne de commande est :
gawk '{printf "%6.2f\n",($1+$2+$3+$4+$5)/5}' file1 > file2

gawk me fait une moyenne des valeurs entières de chacune des colonnes, au lieu de considérer la valeur réelle.
pourtant j'ai spécifié une sortie au format réel dans file2, mais peut-être faut il préciser le format des colonnes (nombres réels) dans file1?

Auriez vous une idée ??

si ce n'est pas clair, faites moi signe !

Merci d'avance
A voir également:

5 réponses

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
5 déc. 2007 à 13:55
essayer en divisant par /5.0
0
en faisant ça, il rajoute uniquement au résultat une décimale après la virgule
mails les $1, $2 ... sont toujours arrondis sur la valeur entière

par exemple pour une ligne où il y a 12.3, 14.5 et 15.6, la moyenne vaut 14.13
et bien, gawk me donne la moyenne de 12, 14 et 15 soit 13.66

il manque un argument à priori ...
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
5 déc. 2007 à 14:25
et avec 12,3 14,5 ?
0
oui, il faut des virgules à la place des points et ça marche !
merci bien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
5 déc. 2007 à 15:46
il doit y avoir une variable d'environnement ou une option de gawk qui définitr les paramètres de langue, comme le format
de la date ou le séparateur point ou virgule.
set | grep LC
ça doit être
export RC_LC_NUMERIC='.'
ou export RC_LC_NUMERIC='POSIX'

0