У меня есть огромные текстовые файлы с двумя полями, первой является строка, вторым является целое число. Файлы отсортированы по первому полю. То, что я хотел бы войти в вывод, является одной строкой на уникальную строку и сумму чисел для идентичных строк. Некоторые строки появляются только однажды в то время как другой появляющиеся многократно. Например, Учитывая демонстрационные данные ниже, для строки glehnia я хотел бы добраться 10+22=32 в результате.
Какие-либо предложения, как сделать это или с gnuwin32 инструментами командной строки или в оболочке Linux?
Спасибо!
glehnia 10
glehnia 22
glehniae 343
glehnii 923
glei 1171
glei 2283
glei 3466
gleib 914
gleiber 652
gleiberg 495
gleiberg 709
Вы могли использование несколько строк Lua для достигания этого. Lua доступен на широком спектре платформ включая Windows и Linux.
-- Quick and dirty - no error checking, unsorted output io.input('huge_text_file.txt') results = {} for line in io.lines() do for text, number in string.gmatch(line, '(%w+)%s+(%d+)') do results[text] = (results[text] or 0) + number end end for text, number in pairs(results) do print(text, number) end
Можно отсортировать вывод с помощью любой утилиты сортировки или еще нескольких строк Lua.