Как определить дубликаты в файле unix и суммировать значения [дубликаты]

Я пытаюсь определить дубликаты в файле unix и суммировать значения. Например:

У меня есть файл типа:

aa,  05
aa, 02
aa, 01
bb, 01
bb, 12
cc ,02
dd, 03

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

aa, 08
bb, 13
cc, 02
dd,03

person user3772540    schedule 29.06.2014    source источник


Ответы (1)


Это должно помочь:

$ awk '{a[$1]+=$2}END{for(k in a)print k,a[k]}' FS=, OFS=, file
bb,13
cc ,2
dd,3
aa,8

Для пользовательской сортировочной трубы для сортировки:

$ awk '{a[$1]+=$2}END{for(k in a)print k,a[k]}' FS=, OFS=, file | sort    
aa,8
bb,13
cc ,2
dd,3

См. man sort, чтобы узнать обо всех возможностях, которые может делать sort.

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

$ awk '{a[$1]+=$2}END{for(k in a)print k,a[k]}' FS=' *, *' OFS=, file | sort 
aa,8
bb,13
cc,2
dd,3
person Chris Seymour    schedule 29.06.2014