Мені потрібна програма для підрахунку кількості слів разом із кількістю зустрічей кожного слова у файлі.
(Більшість знайдених нами прикладів підраховує лише загальну кількість слів.)
Мені потрібна програма для підрахунку кількості слів разом із кількістю зустрічей кожного слова у файлі.
(Більшість знайдених нами прикладів підраховує лише загальну кількість слів.)
Відповіді:
Безкоштовний онлайн-сервіс Wordcounter займає рейтинг найбільш часто використовуваних слів у будь-якому тексті тексту. Використовуйте це, щоб побачити, якими словами ви зловживаєте, або, можливо, просто, щоб знайти деякі ключові слова в документі.
Якщо використання командного рядка (або сценарію) нормально, є мільйон варіантів. Як і за допомогою Perl (для Windows вам потрібно буде встановити ActivePerl або Cygwin з Perl):
perl -0777 -lape's/\s+/\n/g' FILENAME | sort | uniq -c | sort -nr
perl -0777 змушує Perl працювати над усім файлом так, ніби це був один рядок ("режим припущення"). 's/\s+/\n/g' змінює весь пробіл на нові рядки, таким чином: вихід Perl - це одне слово на рядок. sortКоманда сортує слова в алфавітному порядку.uniqКоманда усуває повторювані слова; з -cопцією він також виводить кількість подій.sortкоманда з -nrможливістю сортує отриманий файл чисельно у порядку зменшення.cat FILENAME | sed s/' '/\\n/g | sort | uniq -c | sort -nrможе дати ті самі результати.
sedкраще, ніж perl? (І, можливо, опублікуйте це як відповідь?)
З командного рядка Linux:
sed s/' '/\\n/g FILENAME | sort | uniq -c | sort -nr
У Mac OS X, який використовує версію BSD sed, \nпотрібні певні магії :
sed 's/ /\'$'\n/g' FILENAME | sort | uniq -c | sort -nr
\nможливо, знадобиться якась магія на Mac: sed 's/ /\'$'\n/g' FILENAME | sort | uniq -c | sort -nrсхоже, робити фокус у BSD, sedяк це використовується в OS X.
Командний рядок Linux (Ubuntu):
tr -cs "[:alpha:]" "[\n*]" < file1 | sort | uniq -c | sort -nr > file2