J'ai un script shell:Comment calculer l'écart-type dans mon script shell?
dir=$1
cd $dir
grep -P -o '(?<=<rating>).*' * |
awk -F: '{A[$1]+=$2;L[$1]++;next}END
{for(i in A){print i, A[i]/L[i]}}' | sort -nr -k2 |
awk '{ sub(/.dat/, " "); print }'
qui résume tous les numéros qui suivent le champ <rating>
dans chaque fichier de mon dossier, mais maintenant je dois calculer l'écart type des chiffres plutôt que d'obtenir la moyenne . En additionnant la différence de chaque notation du fichier au carré moyen, puis en divisant ce résultat par la taille de l'échantillon -1. Je n'ai pas besoin de le faire dans tous les fichiers du dossier, mais dans deux fichiers spécifiques, hotel_188937.dat
et hotel_203921.dat
. Voici un exemple du contenu d'un de ces fichiers:
<Overall Rating>
<Avg. Price>$155
<URL>
<Author>Jeter5
<Content>I hope we're not disappointed! We enjoyed New Orleans...
<Date>Dec 19, 2008
<No. Reader>-1
<No. Helpful>-1
<rating>4
<Value>-1
<Rooms>3
<Location>5
<Cleanliness>3
<Check in/front desk>5
<Service>5
<Business service>5
<Author>...
repeat fields again...
La taille de l'échantillon du premier fichier est de 127 avec une moyenne de 4,78 par rapport à une taille d'échantillon de 324 et une moyenne de 4,78 pour le deuxième fichier . Y at-il de toute façon que je puisse modifier mon script pour calculer l'écart type pour ces deux fichiers spécifiques plutôt que de calculer la moyenne pour chaque fichier de mon répertoire? Merci pour votre temps.
Découvrez http://stackoverflow.com/questions/18786073/compute-aviation-and-standard-deviation-with-awk – bartvanraaij