


Если в файле первая колонка обозначает группу, а вторая содержит число, awk может собрать сумму для каждой группы. В примере на Mentoring.digital просуммируем количество обработанных задач из TSV, где поля разделены табуляцией.
Сначала запишите заголовок и три строки. printf в примере добавляет настоящие табуляции. Используйте отдельный каталог для учебного файла.
printf 'queue\tjobs\nalpha\t4\nbeta\t5\nalpha\t7\n' > jobs.tsv
awk -F '\t' '
NR > 1 { total[$1] += $2 }
END {
for (queue in total) print queue, total[queue]
}
' jobs.tsv | sort
# alpha 11
# beta 5
-F '\t' задаёт разделитель. NR > 1 пропускает первую строку, $1 становится ключом массива, а $2 прибавляется к сумме. Блок END печатает результат после чтения файла. sort делает порядок вывода предсказуемым при одном и том же окружении.
Пример рассчитан на один файл с двумя полями и целыми неотрицательными числами. У awk есть автоматическое числовое преобразование, поэтому перед суммированием проверьте число полей через NF и форму значения регулярным выражением ^[0-9]+$. Для CSV с кавычками, запятыми внутри поля и переносами строк используйте разбор формата, который умеет учитывать эти правила.
Добавьте новую строку с группой beta и нулём. Её сумма сохранится. Затем добавьте проверку формата и строку с третьей колонкой. Убедитесь, что проверка отвергает эту строку перед подсчётом. Если будете подавать несколько файлов с заголовками, используйте FNR для номера строки внутри каждого файла.
Задачи по разбору файлов встречаются на занятиях по DevOps. Подготовку входных данных и команды можно обсудить с ментором по Linux.