Wie summiere ich mit nawk alle Zahlen in den Feldern $1, $2 und $3?

Wie summiere ich mit nawk alle Zahlen in den Feldern $1, $2 und $3?

Wie summiere ich mit nawk alle Zahlen in den Feldern $1, $2, und $3?

8     6     2

7     3     5

1     9     4

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

Antwort1

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

Antwort2

mit awk:

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

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

Antwort3

Sie können auch Coreutils und BC verwenden:

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

Wenn einige Spalten weggelassen werden sollen, zB wenn die Eingabe so ist:

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

cutkönnen Sie die gewünschten auswählen:

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

Ausgabe in beiden Fällen:

45

verwandte Informationen