как с помощью nawk суммировать все числа в полях $1, $2 и $3?

как с помощью nawk суммировать все числа в полях $1, $2 и $3?

Как с помощью nawk просуммировать все числа в полях $1, $2, и $3?

8     6     2

7     3     5

1     9     4

Я хочу, чтобы результат был равен сумме = 45.

решение1

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

решение2

с помощью awk:

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

Это будет работать независимо от количества строк или столбцов. Используя разделитель записей (RS) как пробел или новую строку, каждое значение разбивается на отдельную строку, и, следовательно, может быть легко добавлено.

решение3

Вы также можете использовать coreutils и bc:

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

Если некоторые столбцы следует пропустить, например, если входные данные выглядят следующим образом:

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

cutможно выбрать нужные:

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

Вывод в обоих случаях:

45

Связанный контент