2

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

8     6     2

7     3     5

1     9     4

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

3 ответа3

5

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

5

используя awk:

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

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

0

Вы также можете использовать 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .