Использование awk для суммирования значений столбца на основе значений другого столбца - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь суммировать определенные числа в столбце, используя awk. Я хотел бы суммировать числа во втором столбце друг с другом, у которых одинаковый IP-адрес.

2001:778:0:1::21 44
2001:778:0:1::21 1406
2001:778:0:1::21 66643
88.222.10.7 66643
88.222.10.7 1406
88.222.10.7 -
88.222.10.7 66643
88.222.10.7 1406
121.141.172.40 235
121.141.172.40 235

Желаемый вывод:

2001:778:0:1::21 68093
88.222.10.7 136098
121.141.172.40 470

1 Ответ

4 голосов
/ 06 марта 2019

1-е решение: Не могли бы вы попробовать следующее. (Если вы не беспокоитесь о последовательности 1-го поля в выходных данных)

awk '{a[$1]+=$NF} END{for(i in a){print i,a[i]}}'  Input_file

2-е решение: Если вы хотите сохранить порядок 1-го поля таким же, как в последовательности Input_file, попробуйте выполнить следующее.

awk '!b[$1]++{c[++count]=$1} {a[$1]+=$NF} END{for(i=1;i<=count;i++){print c[i],a[c[i]]}}'  Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...