#1 Le 06/01/2012, à 01:07
- pwikpwik
[Résolu]Script awk pour connaitre la moyenne de repetition d'occurence
Bonsoir, j'aurais besoin d'aide pour un script awk qui me retournerait la moyenne de repetition de chaque occurence.
Le fichier que je cherche a traiter est de cette forme:
Blabla blabla AA blabla
Blabla blabla AA blabla
Blabla blabla BB blabla
Blabla blabla BB blabla
Blabla blabla AA blabla
Blabla blabla CC blabla
Blabla blabla CC blabla
Pour l'instant j'ai ce script:
BEGIN{
count[$3]++
}
END{
for (i in count){
printf ("\n%d, %d", i, count[i]) >> output
}
close (output)
}
qui retourne:
AA: 3
BB: 2
CC: 2
Je voudrais le completer afin qu'il me retourne la valeur 2.33 (moyenne de repetition de chaque occurence)
Merci de votre aide!
Dernière modification par pwikpwik (Le 06/01/2012, à 02:10)
Hors ligne
#2 Le 06/01/2012, à 01:30
- sputnick
Re : [Résolu]Script awk pour connaitre la moyenne de repetition d'occurence
Salut,
voici :
$ cat /tmp/l
Blabla blabla AA blabla
Blabla blabla AA blabla
Blabla blabla BB blabla
Blabla blabla BB blabla
Blabla blabla AA blabla
Blabla blabla CC blabla
Blabla blabla CC blabla
$
$ awk '{c++; arr[$3]++}END{for (i in arr) {print "Pour " i ", on a " arr[i] " occurences et " c/arr[i] " de moyenne"} print c " occurences"}' /tmp/l
Pour AA, on a 3 occurences et 2.33333 de moyenne
Pour BB, on a 2 occurences et 3.5 de moyenne
Pour CC, on a 2 occurences et 3.5 de moyenne
7 occurences
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#3 Le 06/01/2012, à 01:39
- pwikpwik
Re : [Résolu]Script awk pour connaitre la moyenne de repetition d'occurence
Merci pour ton aide, mais j'ai du mal m'exprimer ,
je souhaite seulement recuperer une valeur, la moyenne generale.
(Nombre d'occurence de AA + Nombre d'occurence de BB + Nombre d'occurence de CC ) / Total
Pour l'exemple que j'ai donné: (3 + 2 + 2) / 7 = 2.33
Hors ligne
#4 Le 06/01/2012, à 01:49
- sputnick
Re : [Résolu]Script awk pour connaitre la moyenne de repetition d'occurence
???????
(3 + 2 + 2) / 7 = 1
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#5 Le 06/01/2012, à 01:52
- pwikpwik
Re : [Résolu]Script awk pour connaitre la moyenne de repetition d'occurence
(3 + 2 + 2) / 3 = 2.33
Désolé!
(Nombre d'occurence de AA + Nombre d'occurence de BB + Nombre d'occurence de CC ) / (Nombre de "motifs" differents)
Dernière modification par pwikpwik (Le 06/01/2012, à 01:52)
Hors ligne
#6 Le 06/01/2012, à 02:00
- sputnick
Re : [Résolu]Script awk pour connaitre la moyenne de repetition d'occurence
awk '{arr[$3]++}END{for (i in arr) {print NR/arr[i]}}' /tmp/l
Dernière modification par sputnick (Le 06/01/2012, à 02:01)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#7 Le 06/01/2012, à 02:09
- pwikpwik
Re : [Résolu]Script awk pour connaitre la moyenne de repetition d'occurence
Merci beaucoup!!
Hors ligne
#8 Le 06/01/2012, à 02:24
- sputnick
Re : [Résolu]Script awk pour connaitre la moyenne de repetition d'occurence
Ben c'était déjà bon en #2
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#9 Le 06/01/2012, à 11:00
- pingouinux
Re : [Résolu]Script awk pour connaitre la moyenne de repetition d'occurence
Bonjour,
@sputnick :
Je pense qu'il y a une petite erreur dans ton script :
$ awk '{arr[$3]++}END{for (i in arr) {print NR/arr[i]}}' /tmp/l
2.33333
3.5
3.5
J'aurais plutôt fait ceci :
$ awk '{arr[$3]++}END{for (i in arr) {S+=arr[i];n+=1;printf ("%s: %d\n", i, arr[i])} printf( "Moyenne : %.2f\n", S/n)}' /tmp/l
AA: 3
BB: 2
CC: 2
Moyenne : 2.33
Cordialement
ou plus simple :
$ awk '{arr[$3]++}END{for (i in arr) {printf ("%s: %d\n", i, arr[i])} printf( "Moyenne : %.2f\n", NR/length(arr))}' /tmp/l
AA: 3
BB: 2
CC: 2
Moyenne : 2.33
Dernière modification par pingouinux (Le 06/01/2012, à 12:30)
Hors ligne
#10 Le 06/01/2012, à 12:18
- sputnick
Re : [Résolu]Script awk pour connaitre la moyenne de repetition d'occurence
Tout dépend de la compréhension du problème de base, mais comme ça pwikpwik aura le choix : moyenne globale ou moyenne par pattern
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#11 Le 06/01/2012, à 12:47
- pingouinux
Re : [Résolu]Script awk pour connaitre la moyenne de repetition d'occurence
Je n'arrive pas à voir ce que représente la quantité (Nb_de_A + Nb_de_B + Nb_de_C) / (Nb_de_A) que tu calcules.
Hors ligne