Показать сообщение отдельно

  #8  
Старый 02.12.2017, 11:41
VasiliyP
Постоянный
Регистрация: 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".

Ну а потом сортируете это по частоте, я так понял, с этим уже вы разобрались.
 
Ответить с цитированием