уникальные значения столбца linux

Я пытаюсь понять, как сохранить только уникальные значения на основе всех значений перед последним столбцом, но также сохранить данные последнего столбца. Я также хотел бы отсортировать данные. Например:

Вклад
Африка огромна 20
Индия — это голубой клей 10
Африка огромна 10
Италия находится в Европе 3
Америка 2014 15< br/> Италия делает пиццу 3

Результат:
Африка огромна 30
Америка 2014 15
Индия — голубой клей 10
Италия делает пиццу 3
Италия находится в Европе 3

Я знаю, что вы можете использовать sort -n и uniq, но я не уверен в других функциях, которые я могу использовать. Спасибо!


person user3750474    schedule 07.07.2014    source источник
comment
Никаких усилий по решению проблемы проявлено не было.   -  person msw    schedule 08.07.2014


Ответы (2)


uniq здесь не сработает, так как не умеет строить сумму вторых столбцов. Но вы можете использовать для этого awk:

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

Вы немного изменили входные данные, теперь awk-скрипт нужно обобщить. В то время как приведенный выше скрипт сгруппирует данные по значению первого столбца и суммирует второй столбец, приведенный ниже сценарий сгруппирует данные по значению первого столбца до последнего столбца и вычислит сумма столбца последний:

awk 'match($0,/.* /){a[substr($0,RSTART,RLENGTH)]+=$NF}END{for(i in a)print i,a[i]}' file
person hek2mgl    schedule 07.07.2014
comment
На самом деле я сделал неверное предположение. Вы случайно не знаете, как я могу решить эту проблему? - person user3750474; 08.07.2014

если вы отсортируете по тексту до последнего нет, вы должны получить --

sed 's/\( [0-9]*$\)/,\1/' 1 |sort -t"," -k1,1 -u  |sed 's/,//'
Africa is huge 20
America 2014 15
India is blue glue 10
Italy is in europe 3
Italy makes pizza 3
person jai_s    schedule 14.07.2014