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


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


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.