Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/06/2013, à 10:39

sab113

calcul mathématique sous commandes shell [Résolu]

Bonjour à tous,

J'aimerais faire un calcul mathématique sous commandes shell, mais je ne sais pas comment je dois m'y prendre.

J'ai plusieurs fichiers composés de colonnes de mots et de leurs valeurs numériques issus d'un précédent traitement.

Par exemple:

fichier1          fichier2          fichier3        fichier4  .....
mot1|2.5        mot1|3.5        mot1|0.9      mot1|0.3
mot2|2.5        mot3|3.0        mot3|0.8      mot3|0.4

et je voudrais faire la moyenne des valeurs numériques de ces mots et avoir un résultat comme celui ci:

fichier
mot1|  7.2   (2.5+3.5+0.9+0.3)
mot2|2.5
mot3|4,2

Pourriez vous m'aider svp.
Je vous remercies à l'avance.

Dernière modification par sab113 (Le 09/06/2013, à 18:35)

Hors ligne

#2 Le 09/06/2013, à 11:15

pingouinux

Re : calcul mathématique sous commandes shell [Résolu]

Bonjour,
J'ai une solution utilisant awk, mais je suppose qu'il s'agit d'un exercice et je te laisse chercher un peu. Voici quand même un indice :

$ awk -F\| '………' fichier*
mot1 som=7.2 moy=1.8
mot2 som=2.5 moy=2.5
mot3 som=4.2 moy=1.4

Dernière modification par pingouinux (Le 09/06/2013, à 11:19)

Hors ligne

#3 Le 09/06/2013, à 18:35

sab113

Re : calcul mathématique sous commandes shell [Résolu]

Bonsoir pingouinux,

merci pingouinux pour ton aide. Non ce n'est pas un exercice mais des tests que je fais et des fois quand je retrouve des petits  traitements à faire sur mes fichiers, j'utilise des commandes shell au lieu de les faire par programmation java, mais je ne maitrise pas vraiment c'est pour ça que je sollicite l'aide des experts du domaine cool
Je vais suivre tes indications merci pour ton aide.

Hors ligne

#4 Le 10/06/2013, à 05:14

pingouinux

Re : calcul mathématique sous commandes shell [Résolu]

Je te donne ma solution avec awk :

awk -F\| '{s[$1]+=$2;n[$1]+=1}END{for(mot in s)printf("%s som=%s moy=%s\n",mot,s[mot],s[mot]/n[mot])}' fichier*

Voici aussi une solution en bash, mais nettement moins concise.

declare -A s n

# Calcul
while IFS=\| read mot val
do
   s[$mot]=$(bc -l <<<"${s[$mot]:-0} + $val")
   ((n[$mot]++))
done < <(cat fichier*)

# Impression des résultats
for mot in "${!s[@]}"
do
   printf "%s som=%s moy=%3.1f\n" "$mot" ${s[$mot]} $(bc -l <<<"${s[$mot]}/${n[$mot]}")
done

Dernière modification par pingouinux (Le 10/06/2013, à 05:19)

Hors ligne

#5 Le 10/06/2013, à 12:40

sab113

Re : calcul mathématique sous commandes shell [Résolu]

Merci pingouinux pour ton aide smile

Hors ligne