У меня есть большой файл (4 миллиарда строк), каждая строка содержит одно слово. Я хочу найти список уникальных слов и соответствующие значения.Как найти уникальные строки в большом файле?
Я пробовал:
sort largefile |uniq -c >outfile
но это все еще работает и не выход.
тогда я попробовал:
awk '!arr[$1]++' largefile >outfile
, но это не не печатают счетчики. Как я могу использовать awk для печати счетчиков? или любой другой альтернативный подход, который может обрабатывать большие файлы.
Редактировать: В файле содержится около 17 миллионов уникальных слов.
кот крупный файл | awk '{printf ("% s% d \ n", $ 1, arr [$ 1] ++)}' | sort -n – Freddy
Это называется «наличие плохих данных» или, возможно, «неправильное использование смешной структуры данных». Если у вас есть 4 миллиарда штук, плоские файлы, вероятно, являются неправильным способом, если вы пытаетесь оптимизировать скорость. –
Если вы скажете 'sort' использовать столько оперативной памяти, сколько сможете, это будет работать много, быстрее. Например, 'sort -S 8G ...', если вы работаете в 64-разрядной системе с более чем 8G оперативной памяти (и ваш сорт - это 64-разрядный исполняемый файл) –