#1 Le 02/02/2017, à 19:26
- Linkzy
Exerciste de Statistiques en Bash file
Bonojour !
Je travail presentment sur un script qui affiche des statistique a partir d'un fichier
#!/bin/bash
if [ -z $1 ]
then
echo "Il manque le nom du fichier en parametre"
elif [[ -e $1 && -r $1 ]] && [ -z $2 ]
then sortie=$1
for letter in {A..Z}
do
echo $(grep -ic "$letter" "$sortie") "mots utilise la lettre - "$letter""
done | sort -rn
elif [[ -e $1 && -r $1 ]] && [ ! -z $2 ]
then
echo "$2"
else
echo "Un probleme est survenue avec le fichier"
fi
pour mon 2e parametre enfin je voudrai qu'il affiche le meme resultat que le premier parametre sauf en pourcentage
exemple :
87% des mots utilise la lettre A
et la vien le probleme je ne sais pas trop par ou debuter
on ma conseiller d'ecrire la valeur dans un tableau et de calculer par la suite avec bc
et la encors je suis pas sur de suivre a 100%
merci de votre aide
Hors ligne
#2 Le 04/02/2017, à 16:26
- kholo
Re : Exerciste de Statistiques en Bash file
salut,
j'ai virer les trucs qui polluent la vue
on revient à plus simple :
edit : attention ; il reste un problème sur le compte !
#!/bin/bash
if [ -z $1 ]; then
echo "Il manque le nom du fichier en paramètre" ;
exit 1
fi
sortie="$1"
let "nbreDeMots=$(wc -w "$sortie")"
for letter in {A..Z}
do
# les calculs :
let "NbreMotslettres=$(grep -ic "$letter" "$sortie")"
let "pourCent=(($NbreMotslettres*100/$nbreDeMots))"
# la sortie :
echo "$NbreMotslettres mots soit $pourCent % utilise la lettre - $letter"
done | sort -rn
Dernière modification par kholo (Le 04/02/2017, à 18:27)
Hors ligne
#3 Le 05/02/2017, à 04:52
- Linkzy
Re : Exerciste de Statistiques en Bash file
Un gros merci a toi pour ta reponse !!
cela ma aider grandement j'ai seulement modifier le let par un bc et tout fonctionne comme desirer voila mon code pour info
merci beaucoup encors !!
#!/bin/bash
# Si parametre 1 es vide.
if [ -z $1 ]
then
echo -e "\nEntrez un fichier comme parametre #1, au besoin pour afficher resultat en % entrez un 2e parametre\n"
echo "Exemple syntaxe : ./fichier.sh [parametre#1] [parametre#2] "
# Si parametre 1 existe, si il es accessible en lecture et si il n'y a pas de 2e parametre.
elif [[ -e $1 && -r $1 ]] && [ -z $2 ]
then sortie=$1
# Effectue la statistique et l'affiche en ordre
for letter in {A..Z}
do
echo $(grep -ic "$letter" "$sortie") "mots utilise la lettre - " "$letter"
done | sort -rn
# Si parametre 1 existe, si il es accessible en lecture et si il y a une 2e parametre.
elif [[ -e $1 && -r $1 ]] && [ $2 ]
then
sortie=$1
nbrtotalm=$(grep -ic [A-Z] "$sortie")
# Effectue la 2e statistique et affiche en ordre
for letter in {A..Z}
do
nbrmotletter=$(grep -ic "$letter" "$sortie")
pourc=$(echo "("$nbrmotletter" * 100) / "$nbrtotalm" " | bc -l )
echo "$pourc"% des mots utilise la lettre - "$letter"
done | sort -rn
# Sinon affiche un message erreur.
else
echo -e "\nUn probleme est survenue avec le fichier"
echo -e "verifier l'ortographe du fichier et des parametres\n"
fi
Hors ligne