====== Как составить частотный словарь ====== Если одной строкой, то получается вот так. cat words.txt| sed s/" "/"\n"/g|sort|sed 's/[[:upper:]]/\l&/g'|sed s/[^a-zа-я-]//g|uniq -c -d| sort -n| awk 'length($2) > 4'|tail -n 1000| sort -n -r - В words.txt содержатся тексты. Вообще, конечно, можно вместо words.txt использовать *.txt для чтения всех txt-файлов в текущей директории, или dir/*.txt для чтения всех txt в директории dir. - Далее потоковый текстовый редактор sed делает перенос каждого слова на новую строку, чтобы можно было составить сам словарь. - Затем происходит сортировка данных, весь текст приводится к нижнему регистру и вырезаются все знаки пунктуации - таким образом становится довольно легко узнать, какие же слова все-таки повторяются. - После этого за работу берется программа uniq, выбирающая из данных только повторяющиеся слова и пишущая количество повторов. - Далее снова происходит сортировка данных, но на этот раз уже по частоте встречаемости, которую как раз подсчитала uniq. - Затем awk'ом вырезаются все слова, длинна которых составляет менее 4 символов, так как обычно это слова вроде "да, нет, как, и, или" и т.п. Учитывать подобные слова в частотном словаре бессмысленно. - В завершающей стадии работы этого однострочного скрипта командой tail выводятся только топ-1000 слов, а sort зеркально разворачивает список, чтобы самые популярные слова были написаны сверху. Вот и все. Если в вашей командной строке нет проблем с русской локалью, то приведенный выше скрипт сработает как здесь и описано :) Но в случае, если какие-то проблемы все-таки есть, то можно использовать вот такой вариант скрипта: cat words.txt| sed s/" "/"\n"/g|sort| sed s/"[[:punct:]]"//g|uniq -c -d| sort -n| awk 'length($2) > 4'|tail -n 20| sort -n -r Как видно, этот вариант отличается лишь тем, что вместо выдергивания всех символов кроме знаков пунктуации, вырезаются непосредственно знаки пунктуации, а сами буквы остаются нетронутыми. По сути все тоже самое, только не происходит переход в нижний регистр, что делает этот вариант менее приемлемым. В заключении - скрипт: #!/bin/sh URL="intel-ussur.ru" MAXWORD=100 w3m -dump -T text/html ${URL} | \ sed s/" "/"\n"/g | \ sort | \ sed 's/[[:upper:]]/\l&/g' | \ sed s/[^a-zа-я-]//g | \ uniq -c -d | \ sort -n | \ awk 'length($2) > 4' | \ tail -n ${MAXWORD} | \ sort -n -r