[AWK] nombre d'occurrences d'un mot

Fermé
sparc5 - 25 sept. 2008 à 14:52
 jenaipas - 11 mai 2009 à 17:37
Bonjour,

J'aimerais avec AWK, lors de la lecture d'un fichier en entrée, trouver le nombre d'occurrences d'un mot qui se repète d'une ligne à une autre uniquement et si possible afficher le résultat de 2 façons

° Exemple de fichier
Thomas
Thomas
Thomas
Bernard
Bernard
Bernard
Marie
Marie
Marie
Marie
Marie
Thomas
Joel
Joel

° 1er résultat
Thomas = 3
Bernard = 3
Marie = 5
Thomas = 1
Joel = 2


° 2eme résultat
Thomas = 3
Thomas = 3
Thomas = 3
Bernard = 3
Bernard = 3
Bernard = 3
Marie = 5
Marie = 5
Marie = 5
Marie = 5
Marie = 5
Thomas = 1
Joel = 2
Joel = 2

Merci de vos suggestions.

3 réponses

jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
25 sept. 2008 à 15:44
Ceci devrait faire l'affaire:

johand@osiris:~/src/awk$ cat data.txt 
Thomas
Thomas
Thomas
Bernard
Bernard
Bernard
Marie
Marie
Marie
Marie
Marie
Thomas
Joel
Joel
johand@osiris:~/src/awk$ cat count.awk
{
    frequencies[$1]++;
}
END {
    for (name in frequencies)
	printf "%s\t%d\n" , name ,frequencies[name];
}
johand@osiris:~/src/awk$ awk -f count.awk < data.txt 
Thomas	4
Bernard	3
Joel	2
Marie	5
3
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
25 sept. 2008 à 17:00
Salut jisisv,

C'est pas bon ;-((

C'est le nombre d'occurrences consécutives qu'il veut, pas le total, ce fut trop simple autrement ;-))
 while read line; do echo -e "$line = "$(grep -c $line fich); done < fich | sort -u
0