$ awk 'NR > 1 { s[$2] += $3; n[$2] = $1 } END { for (i in s) { print n[i], i, s[i] }}' file
RS 2 21100
RK 1 11380
Мы используем два массива, один для хранения сумм(s
)и один для хранения имен(n
). Индексация в массивы выполняется с использованием идентификатора (может быть несколько человек с одинаковым именем, поэтому мы не будем использовать его в качестве индекса ).
Для каждой строки ввода (, за исключением строки заголовка ), мы обновляем сумму и сохраняем имя. В конце просматриваем сохраненную информацию и распечатываем ее.
То, что я вижу сразу:number=echo $i | sed 's%/sys/class/rc/rc([0-9]+)%$0%'
Оболочка не знает, как выполнить это как команду и сохранить вывод в переменной number. Попробуйте вместо этого:number=`echo $i | sed 's%/sys/class/rc/rc([0-9]+)%$0%' `
или number=$( echo $i | sed 's%/sys/class/rc/rc([0-9]+)%$0%' )