2015-07-23 4 views
0

Ищете awk или аналогичную команду, которая может сортировать файл с 2 столбцами, а затем выводить выходные данные из уникальных имен столбцов и общего числа в столбце 2.ksh сортировать первый столбец и второй второй столбец

так, например:

aaaa 11.5 
aaaa 1.01 
aaaa 5.50 
bbbb 12.5 
bbbb 1.10 
bbbb 9.5 

ищет выход

aaaa 6.00 
bbbb 7.7 

ответ

0

Как это с AWK:

awk '{a[$1]+=$2;b[$1]++} END{for(i in a)print i,a[i]/b[i]}' File 
bbbb 7.7 
aaaa 6.00333 

Если вы хотите, чтобы закруглить, использовать Printf.

awk '{a[$1]+=$2;b[$1]++} END{for(i in a)printf("%s %.2f\n",i,a[i]/b[i])}' File 

с первым полем в качестве индекса массива обновления a (складываем 2-го поля). Держите счетчик b[first field] также обновлен. В конце напечатайте все индексы a и в среднем. Надеюсь, это понятно.

Для отсортированного результата, трубы выход к sort (awk '{a[$1]+=$2;b[$1]++} END{for(i in a)print i,a[i]/b[i]}' File | sort)

Смежные вопросы