GNU/Linux >> Tutoriels Linux >  >> Linux

Comment obtenir la somme des valeurs dans la colonne en fonction des variables dans une autre colonne séparément ? ?

Cette question a déjà des réponses ici :Comment calculer la somme des données qui ont le même identifiant dans la première colonne ?

(4 réponses)
Fermé il y a 2 ans.

J'ai un tableau de données comme ci-dessous

abc 1   1   1
bcd 2   2   4
bcd 12  23  3
cde 3   5   5
cde 3   4   5
cde 14  2   25

Je veux la somme des valeurs dans chaque colonne en fonction des variables de la première colonne et le résultat souhaité est comme ci-dessous :

abc 1   1   1
bcd 14  25  7
cde 20  11  35

J'ai utilisé la commande awk comme celle-ci

awk -F"\t" '{for(n=2;n<=NF; ++n)a[$1]+=$n}END{for(i in a ) print i, a[i] }' tablefilepath

et j'ai obtenu un résultat ci-dessous :

abc 3
bcd 46
cde 66

Je pense que la fin de mon code est erronée mais je ne sais pas comment y remédier.
J'ai besoin de quelques instructions pour corriger le code.

Réponse acceptée :

Vous étiez assez proche.
Vous voyez ce que vous faisiez de mal, n'est-ce pas ?
Vous gardiez un total pour chaque valeur de colonne 1,
alors que vous auriez dû en garder trois.

Ceci est similaire à la réponse d'Inian,
mais trivialement extensible pour gérer n'importe quel nombre de colonnes :

awk -F"\t" '{for(n=2;n<=NF; ++n) a[$1][n]+=$n}
        END {for(i in a) {
                printf "%s", i
                for (n=2; n<=4; ++n) printf "\t%s", a[i][n]
                printf "\n"
             }
        }'

Plutôt que de conserver trois tableaux, comme la réponse d'Inian,
il conserve un tableau à deux dimensions.


Linux
  1. Comment obtenir la somme Md5 du contenu d'un répertoire en une seule somme ?

  2. Comment trier un fichier, en fonction de ses valeurs numériques pour un champ ?

  3. Comment obtenir l'utilisation du processeur

  4. Comment puis-je obtenir des valeurs uniques à partir d'un tableau dans Bash ?

  5. Comment obtenir ps pour imprimer le groupe?

Comment utiliser des variables dans Ansible Playbook

Comment obtenir des informations sur d'autres utilisateurs de Linux

Comment obtenir votre adresse IP sous Linux

Comment faire pour que l'horloge affiche la date ?

Bin déplacé et autres dossiers ! Comment les récupérer ?

Utiliser awk pour additionner les valeurs d'une colonne, en fonction des valeurs d'une autre colonne