Question en utilisant nawk, comment faire la somme de tous les nombres dans les champs $ 1, $ 2 et $ 3?


En utilisant nawk, comment faire la somme de tous les nombres $1, $2, et $3 des champs?

8     6     2

7     3     5

1     9     4

Je veux que le résultat soit somme = 45


2
2017-10-31 15:16


origine


J'ai eu un commentaire, réalisé que la question était à tous. Peut-il être un script bash ou voulez-vous un one-liner? - nerdwaller


Réponses:


nawk 'BEGIN { sum=0; } {sum += $1 + $2 + $3;} END { printf "%d\n", sum } ' a.in


5
2017-10-31 15:37





en utilisant awk:

awk '{x+=$0;}END{print x}' RS="[ \n]"  file

Cela fonctionnera indépendamment du nombre de lignes ou de colonnes. En utilisant le séparateur d’enregistrements (RS) comme espace ou nouvelle ligne, chaque valeur est divisée en une ligne distincte et peut donc être facilement ajoutée.


5
2017-10-31 15:38





Vous pouvez aussi aller avec coreutils et bc:

<file head -c-1 | tr ' \n' '++'; echo) | bc

Si certaines colonnes doivent être omises, par ex. si l'entrée est comme ça:

A 8 6 2
B 7 3 5
C 1 9 4

cut peut sélectionner les voulus:

<file cut -d' ' -f2- | head -c-1 | tr ' \n' '++'; echo) | bc

Sortie dans les deux cas:

45

0
2017-10-31 17:09