>_ IzzyLab

Практическое задание

awk: сумма по группам

средне

В /root/spend.txt две колонки: категория и сумма. Просуммируй суммы по каждой категории и запиши в /root/by_cat.txt строки вида категория сумма. Порядок строк неважен.

Что потренируешь:
  • awk
  • ассоциативный массив
  • группировка по ключу
  • цикл for-in
  • блок END

Разбор темы

Когда суммировать надо не общий итог, а отдельно по каждому значению ключа, в awk берут ассоциативный массив — его индекс не число, а произвольная строка, например категория из первого поля. За один проход по файлу к ячейке нужного ключа прибавляют значение из колонки-суммы, и так постепенно набирается таблица «ключ → сумма». Печатать её надо в блоке END, когда весь файл прочитан: массив обходят циклом по ключам и на каждый ключ выводят накопленную сумму, а порядок обхода по условию не важен.

Что проверяется

  1. суммы по категориям верны (books 3, food 17, toys 13)

Как это выглядит