Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 sad,

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!! big_smile

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 wink


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