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
cut
können Sie die gewünschten auswählen:
<file cut -d' ' -f2- | head -c-1 | tr ' \n' '++'; echo) | bc
Ausgabe in beiden Fällen:
45