Как с помощью 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