@olegun08

Имею базу в формате txt размером 2gb, как отсортировать по количеству символов на строку?

имею базу в формате txt размером 2gb, нужно отсортировать по количеству символов на строку с сохранением в разные файлы.
  • Вопрос задан
  • 262 просмотра
Пригласить эксперта
Ответы на вопрос 4
@rPman
Для таких операций уже несколько десятилетий в linux существует утилита awk со своим языком программирования (он достаточно простой хоть и странный), так же можно соорудить регулярное выражение и с помощью утилиты sed или grep, несколькими проходами пройти по файлу, и сначала вывести все короткие строки, вторым проходом все длинные.

так же можно написать приложение на любом языке программирования, построчно читать файл, измерять длину строки или какое тебе нужно условие и записывать в нужный файл, кода строк на 5-6
Ответ написан
Комментировать
xotkot
@xotkot
хорошо есть и хорошо весьма
как-то так
awk "{print length,\$0}" FILE_IN |sort -n |cut -d ' ' -f 2- > FILE_OUT

{1} | {2} | {3}
{1} -- добавляем количество символов в начало каждой строки (формируем первый столбец)
{2} -- сортируем строки по первому столбцу
{3} -- удаляем первый столбец
Ответ написан
Внести данные в реляционную базу данных (SQl Server, MySql, PostgreSql) и отсортировать запросом
Ответ написан
Комментировать
@mayton2019
Bigdata Engineer
Это задача на смекалку. Тут на самом деле сортировать не надо. Тут нужен роутинг слов в разные файлы.
В 1 проход делается. Разумеется мы должны предполагать что в 2Гб файле будут не сильно длинные строки.

Допустим для среднего текстового файла 80 символов на строку (стандарт такой был в 20м веке) мы получим
80 файлов.

По смыслу это похоже на сортировку подсчетом. Это когда кардинальность выборки крайне низка. Гендер например.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы