Calcul de la somme d'un champ spécifique à partir des entrées du tableau


Angio

J'ai un tableau trf. Voudrait calculer la somme du deuxième élément dans chaque entrée de tableau.

Exemple de contenu de tableau

trf=( "2 13 144" "3 21 256" "5 34 389" )

Voici l'implémentation actuelle, mais je ne la trouve pas assez robuste. Par exemple, il échoue avec un nombre arbitraire d'éléments (mais considéré comme constant d'un élément de tableau à un autre) dans chaque entrée de tableau.

   cnt=0
   m=${#trf[@]}
   while (( cnt < m )); do
     while read -r one two three
     do
       sum+="$two"+
     done <<< $(echo ${array[$count]})
     let count=$count+1
   done

   sum+=0
   result=`echo "$sum" | /usr/bin/bc -l`
Shawn

Vous rendez les choses trop compliquées. Quelque chose comme

#!/usr/bin/env bash
trf=( "2 13 144" "3 21 256" "5 34 389" )
declare -i sum=0 # Integer attribute; arithmetic evaluation happens when assigned
for (( n = 0; n < ${#trf[@]}; n++)); do
    read -r _ val _ <<<"${trf[n]}"
    sum+=$val
done
printf "%d\n" "$sum"

en pure bash, ou utilisez simplement awk(c'est pratique si vous avez des nombres à virgule flottante dans vos données réelles):

printf "%s\n" "${trf[@]}" | awk '{ sum += $2 } END { print sum }'

Articles connexes


Calcul à partir d'un tableau php de valeur spécifique

Qaiser420 Bonjour à tous j'ai besoin d'aide et je veux me faire une idée de mon cas mon exemple de cas : certains noms ont attribué des pouvoirs comme jean = 20 aliza= 30 rehana=40 adiba=50 noir = 1000 blanc = 7500 rouge = 3500 quand quelqu'un entre dans le mo

Calcul de la somme d'un tableau de différences

Martineau J'ai un code qui calcule la moyenne d'un tableau de 10 nombres puis calcule la différence entre la moyenne et chaque nombre. Je dois maintenant additionner toutes les différences mais je ne sais pas comment. Voici ce que j'ai jusqu'à présent: #includ