awk суммирование зачений в колонке на основе другой колонки (Решение есть не пойму как это работает))

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
Аватара пользователя
tmp13
Сообщения: 986
ОС: openSuse 11.2

awk суммирование зачений в колонке на основе другой колонки

Сообщение tmp13 »

Вообщем взято это из данной темы: http://stackoverflow.com/questions/2311228...-another-column
Итак есть файл:
ABC 50
DEF 70
XYZ 20
DEF 100
MNP 60
ABC 30

Надо суммировать значения в колонке 2 на основе колонки 1.
Решение:

Код: Выделить всё

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


Ну я решил сделать дурацкий тест:
1. Какай то хня на выходе

Код: Выделить всё

echo lala|awk '{a[AA]=10;a[AB]=20}END{for(i in a) print i,a[i]}'

20

2. Ну типа всё норм

Код: Выделить всё

echo lala|awk '{a[1]=10;a[2]=20}END{for(i in a) print i,a[i]}'

1 10
2 20


Но если я правильно понимаю то в решении как раз в качестве номера элемента массива используется поле адын.
В чём прикол?) Что я не понимаю?
Красных бей и белых бей!
Вот вам иерархия!
Я люблю тебя за это, милая моя,
Разудалая, хмельная мать моя – Анархия!
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: awk суммирование зачений в колонке на основе другой колонки

Сообщение Bizdelnick »

Shell

% echo lala | awk '{a["AA"]=10;a["AB"]=20}END{for(i in a) print i,a[i]}' AA 10 AB 20 %

Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
tmp13
Сообщения: 986
ОС: openSuse 11.2

Re: awk суммирование зачений в колонке на основе другой колонки

Сообщение tmp13 »

Всё понятно=)
Спасибо=)
Красных бей и белых бей!
Вот вам иерархия!
Я люблю тебя за это, милая моя,
Разудалая, хмельная мать моя – Анархия!
Спасибо сказали:
Ответить