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


2

En utilisant nawk, comment résumer tous les numéros $1, $2et les $3champs?

8     6     2

7     3     5

1     9     4

Je veux que le résultat soit somme = 45


J'ai eu un commentaire, j'ai réalisé que la question était générale. Peut-il s'agir d'un script bash ou voulez-vous un one-liner?
nerdwaller

Réponses:


5

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


5

en utilisant awk:

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

Cela fonctionnera quel que soit le nombre de lignes ou de colonnes. En utilisant le séparateur d'enregistrement (RS) comme espace ou nouvelle ligne, chaque valeur est fractionnée en une ligne distincte et peut donc être facilement ajoutée.


0

Vous pouvez aussi aller avec coreutils et bc:

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

Si certaines colonnes doivent être omises, par exemple si l'entrée est comme ceci:

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

cut peut sélectionner les personnes recherchées:

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

Sortie dans les deux cas:

45
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.