скриптинг в awk - PullRequest
       11

скриптинг в awk

2 голосов
/ 20 апреля 2010

У меня есть текстовый файл с содержимым, как показано ниже:

1,A,100
2,A,200
3,B,150
4,B,100
5,B,250

мне нужен вывод в виде:

A,300
B,500

логика здесь сумма всех 3-х полей, чье 2-е полетакое A и таким же образом для B

как мы можем сделать это с помощью awk?

Ответы [ 3 ]

2 голосов
/ 20 апреля 2010

Вы можете сделать это, используя hash как:

awk -F"," '{cnt[$2]+=$3}END{for (x in cnt){printf "%s,%d\n",x,cnt[x]}}' file
1 голос
/ 20 апреля 2010

Ну, я не для написания и отладки кода для вас. Однако вам нужны следующие элементы:

  • Вы можете использовать FS=",", чтобы изменить разделитель полей на запятую.
  • Поля, которые вас интересуют, это, очевидно, второе ($2) и третье ($3) поля.
  • Вы можете создать свои переменные , чтобы накапливать значения в.
0 голосов
/ 20 апреля 2010
$ awk -F"," '{_[$2]+=$3}END{for(i in _)print i,_[i]}' OFS="," file
A,300
B,500
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...