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 02/02/2017, à 20: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, à 17: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, à 19:27)

Hors ligne

#3 Le 05/02/2017, à 05: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 !! smile

#!/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