J'ai besoin d'un programme pour compter le nombre de mots avec le nombre d'occurrences de chaque mot dans un fichier.
(La plupart des exemples que j'ai trouvés ne comptent que le nombre total de mots.)
J'ai besoin d'un programme pour compter le nombre de mots avec le nombre d'occurrences de chaque mot dans un fichier.
(La plupart des exemples que j'ai trouvés ne comptent que le nombre total de mots.)
Réponses:
Le service en ligne gratuit Wordcounter classe les mots les plus fréquemment utilisés dans un corps de texte donné. Utilisez-le pour voir quels mots vous utilisez trop ou peut-être simplement pour trouver des mots-clés dans un document.
Si la ligne de commande (ou un script) convient, il existe un million d'options. Comme en utilisant Perl (pour Windows, vous devez installer ActivePerl ou Cygwin avec Perl):
perl -0777 -lape's/\s+/\n/g' FILENAME | sort | uniq -c | sort -nr
perl -0777 Perl opère sur l’ensemble du fichier comme s’il s’agissait d’une seule ligne ("mode slurp"). 's/\s+/\n/g' change tous les espaces en nouvelles lignes, ainsi: la sortie de Perl est d’un mot par ligne. sortcommande trie les mots par ordre alphabétique.uniqcommande élimine les mots en double; avec l' -coption, il imprime également le nombre d'occurrences.sortcommande, avec l' -nroption, trie le fichier résultant numériquement par ordre décroissant.cat FILENAME | sed s/' '/\\n/g | sort | uniq -c | sort -nrpourrait donner les mêmes résultats.
sedmeilleur que perl? (Et peut-être poster ceci comme réponse?)
C'est très facile. Utilisez simplement la commande suivante:
sort file.txt | uniq -c | sort -r
sort -rbesoin du -ndrapeau), mais seulement si chaque mot est sur une seule ligne dans le fichier lui-même. En effet, la question n’est pas claire à ce sujet.
A partir d'une ligne de commande Linux:
sed s/' '/\\n/g FILENAME | sort | uniq -c | sort -nr
Sur Mac OS X, qui utilise la version BSD de sed, le \nbesoin de magie :
sed 's/ /\'$'\n/g' FILENAME | sort | uniq -c | sort -nr
\npeut que le besoin d'un peu de magie sur un Mac: sed 's/ /\'$'\n/g' FILENAME | sort | uniq -c | sort -nrsemble faire l'affaire avec les BSD sedutilisés sous OS X.
Ligne de commande Linux (Ubuntu):
tr -cs "[:alpha:]" "[\n*]" < file1 | sort | uniq -c | sort -nr > file2