
02.12.2017, 11:41
|
|
Постоянный
Регистрация: 30.08.2011
Сообщений: 358
С нами:
7738166
Репутация:
11
|
|
Сообщение от Klark89
(проблема 1)
Доброго дня всем. У меня такой вопрос: имеется текстовый файл (парольный словарик), где слова уже отсортированы по частоте. Как добавлять в него новые слова, не нарушая порядок первичной сортировки? Например:
Цифры справа - частота слов. Дубликаты в первом словаре уже удалены. Во втором (новые слова) могут встречаться. Важна сортировка именно по частоте. Остальные виды сортировки не так важны. Инересует решение для линукса/убунту.
Логично было бы привести оба словаря к одному формату. Пусть это будет "qwert 141", т.е. строка+пробел+количество_п второв. Сливаете оба в один, сортируете простой сортировкой, чтобы одинаковые слова шли подряд, потом проходите по нему, суммируя частоту повторов слов, если они совпадают. Вот так:
Код:
sort -T. in1.txt in2.txt | perl -ne 'END{print "$txt$cnt\n"} /^(.+?)(\d+)$/; if(defined $txt && ($txt ne $1)){print "$txt$cnt\n"; $txt=$1; $cnt=$2;}else{$txt=$1; $cnt+=$2;}' > out.txt
Здесь in1.txt in2.txt - оба типа "qwert 141".
Ну а потом сортируете это по частоте, я так понял, с этим уже вы разобрались.
|
|
|