У меня есть файл ввода, как показано ниже:
-4.0,vijay -2.0,chan -3.0,vijay
, и моя команда:
awk -F, '{a[$2]=a[$2]+$1}{for (i in a) print i","a[i]}'
Я ожидаю
vijay,-7.0 chan,-2.0
фактический вывод
vijay -4 vijay -4 chan -2 vijay -7 chan -2
Попробуйте:
awk -F, '{arr[$2]+=$1}END{for(i in arr)print i,",",arr[i]}'
Похоже, вам нужно сохранить отпечаток, пока все строки не будут обработаны.
'{a[$2]=a[$2]+$1}END{for (i in a) print i","a[i]}'
Также попробуйте printf, чтобы получить запятую в нужном месте.
printf
Вам необходимо напечатать массив в блоке END, иначе ваш цикл for начнет печатать для каждой итерированной записи.
awk -F, '{a[$2]+=$1}END{for (i in a) print i","a[i]}' file