Compter la longueur des mots d'un fichier avec awk

Braveorc Messages postés 3 Statut Membre -  
Braveorc Messages postés 3 Statut Membre -
Bonjour, Je suis tout nouveau ici sur ces forums, je me présente je suis étudiant (bref, de retour aux études après 20+ années sur le marché du travail) et je fait présentement un cour sur la gestion et sécurité des réseaux.

Evidemment ce n'est pas chose aisée mais je me débrouille assez bien en général.

Bon, présentement je travaille à approfondir mes connaissances qui sont très de base sur AWK (dans CentOS 6.6 si ca peut changer quelque chose) et j'essaie d'établir dans un petit programme awk une facon de faire les choses suivantes:

Dans un très long fichier, compter la longueur de lettres de tout les mots qu'il contient (il y en a un par ligne apres que je l'ai nettoyé) et afficher le résultat de la facon suivante (ou similaire)

Taille---------NBRE de mots
4--------------203
5--------------300
6--------------460
7--------------640

etc

J'ai fait plusieurs ébauches en utilisant print length($0)) mais je n'arrive pas a faire comptabiliser et afficher comme ci haut.

je demarre mon script comme cela
awk -f monfichier.awk fichier_a_analyser.txt

Merci à l'avance.
A voir également:

2 réponses

dubcek Messages postés 19021 Statut Contributeur 5 637
 
hello
que représente NBRE de mots si il n'y a qu'un mot par ligne ?
0
Braveorc Messages postés 3 Statut Membre
 
Le nombre de mots total ayant cette longueur de lettres. Par exemple 240 mots comptent 9 lettres de long.
0
dubcek Messages postés 19021 Statut Contributeur 5 637
 
essayer ça, les résultats ne sont pas triés
awk 'BEGIN {RS="[ \n]+"; print "Taille-----NBRE de mots"} {t[length()]++} END {for (n in t)printf "%-3d %s %s\n", n, "-------", t[n]}' fichier
0
Braveorc Messages postés 3 Statut Membre
 
Merci beaucoup, ca fonctionne, et je fait trier le tout en ajoutant | sort -n
0