Wie kann man mit nawk alle Zahlen in Feldern von $ 1, $ 2 und $ 3 summieren?

2

Wie man mit awk alle Zahlen summiert $1. $2, und $3 Felder?

8     6     2

7     3     5

1     9     4

Ich möchte, dass das Ergebnis Summe = 45 ist

Steve
quelle
Ich hatte einen Kommentar und erkannte, dass die Frage für alle stand. Kann es ein Bash-Skript sein oder möchten Sie einen Einzeiler?
nerdwaller

Antworten:

5

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

gt6989b
quelle
5

awk verwenden:

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

Dies funktioniert unabhängig von der Anzahl der Zeilen oder Spalten. Durch Verwendung des Datensatztrennzeichens (RS) als Leerzeichen oder Newline wird jeder Wert in eine separate Zeile aufgeteilt und kann daher problemlos hinzugefügt werden.

Guru
quelle
0

Sie könnten auch mit coreutils und bc gehen:

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

Wenn einige Spalten weggelassen werden sollten, z. wenn die Eingabe so ist:

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

cut kann die gewünschten auswählen:

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

Ausgabe in beiden Fällen:

45
Thor
quelle