sed -e 's/[^[:alpha:]]/ /g' text_to_analize.txt | tr '\n' " " | tr -s " " | tr " " '\n'| tr 'A-Z' 'a-z' | sort | uniq -c | sort -nr | nl
Эта команда делает следующее:
- Замените все не алфавитно-цифровые символы пробелом.
- Все разрывы строк также преобразуются в пробелы.
- Уменьшает все несколько пробелов до одного пробела
- Все пробелы теперь преобразуются в разрывы строк. Каждое слово в строке.
- Переводит все слова в нижний регистр, чтобы избежать «Hello» и «Hello», чтобы быть разными словами
- Сортировка текста
- Считает и удаляет равные линии
- Сортирует в обратном порядке, чтобы посчитать самые частые слова
- Добавьте номер строки к каждому слову, чтобы узнать значение слова в целом
Например, если я хочу проанализировать первое сообщение Линуса Торвальда:
От: torvalds @ klaava.Хельсинки.FI (Линус Бенедикт Торвальдс) Группы новостей: comp.os.minix Тема: Что бы вы хотели увидеть больше всего в minix? Резюме: небольшой опрос для моей новой операционной системы. Message-ID: <1991Aug25.205708.9541@klaava.Хельсинки.FI> Дата: 25 августа 91 20:57:08 GMT Организация: Университет Хельсинки
Привет всем, кто использует Minix -
Я делаю (бесплатную) операционную систему (просто хобби, она не будет большой и профессиональной, как gnu) для 386 (486) клонов AT. Это варилось с апреля и начинает готовиться. Я хотел бы получить какие-либо отзывы о вещах, которые людям нравятся / не нравятся в minix, так как моя ОС чем-то напоминает это (такая же физическая структура файловой системы (по практическим причинам) среди прочего)
В настоящее время я портировал bash (1.08) и gcc (1.40), и кажется, что все работает. Это подразумевает, что я получу что-то практичное в течение нескольких месяцев, и я хотел бы знать, какие функции хотели бы получить большинство людей. Любые предложения приветствуются, но я не буду обещать, что буду их реализовывать
Линус (torvalds@kruuna.helsinki.fi)
PS. Да - он свободен от любого кода minix и имеет многопоточный fs.
Он НЕ переносим (использует 386 переключений задач и т.д.) И, вероятно, никогда не будет поддерживать ничего, кроме жестких дисков AT, поскольку это все, что у меня есть :-(.
Я создаю файл с именем linus.txt, вставляю содержимое и затем пишу в консоли:
sed -e 's/[^[:alpha:]]/ /g' linus.txt | tr '\n' " " | tr -s " " | tr " " '\n'| tr 'A-Z' 'a-z' | sort | uniq -c | sort -nr | nl
Выход будет:
1 7 i
2 5 to
3 5 like
4 5 it
5 5 and
6 4 minix
7 4 a
8 3 torvalds
9 3 of
10 3 helsinki
11 3 fi
12 3 any
13 2 would
14 2 won
15 2 what
16 ...
Если вы хотите визуализировать только первые 20 слов:
sed -e 's/[^[:alpha:]]/ /g' text_to_analize.txt | tr '\n' " " | tr -s " " | tr " " '\n'| tr 'A-Z' 'a-z' | sort | uniq -c | sort -nr | nl | head -n 20
Важно отметить , что команда тр аз «AZ» «» не SUPORT UTF-8 еще, так что на иностранных языках слово Apres бы перевести как Apres.