Мені потрібна програма для підрахунку кількості слів разом із кількістю зустрічей кожного слова у файлі.
(Більшість знайдених нами прикладів підраховує лише загальну кількість слів.)
Мені потрібна програма для підрахунку кількості слів разом із кількістю зустрічей кожного слова у файлі.
(Більшість знайдених нами прикладів підраховує лише загальну кількість слів.)
Відповіді:
Безкоштовний онлайн-сервіс 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