2015-12-06 4 views
2

У меня есть файл с кучей строк, выглядит следующим образом:Объединение линий с одной строки в Bash

3 world 3 moon 3 night 2 world 2 video 2 pluto 1 world 1 pluto 1 moon 1 mars

Я хочу взять каждую строку, которая содержит то же самое слово, и объединить их, добавляя предшествующее число, так что это выглядит следующим образом:

6 world 4 moon 3 pluto 3 night 2 video 1 mars

Я пытался комбинации с СЕПГ, но я не могу показаться, чтобы получить это право. Моя следующая идея состояла в том, чтобы отсортировать их, а затем проверить, соответствует ли следующая строка тому же слову, а затем добавить их, но я не мог понять, как заставить его сортировать слово, а не число.

ответ

3

Сумма и порядок:

awk -F" " '{c[$2]+=$1} END {for (i in c){print c[i], i}}' | sort -n -r 
Смежные вопросы