bonjour a tous cela fait plus de 24 h que je cherche déspérement la réponse a mon probléme dans l'exercice langstat je m'explique on me demande d'écrire dans un premier temps un code qui affiche le nombre de lettre dans le dico.txt ce que je fais ca marche niquel mais impossible d'excuter un sort -nr sur ce fichier regarder tous simplement mon code je me suis tromper ?
#!/bin/bash
if [ ! $# -ge 1 ] || [ ! -e $1 ]
then
echo 'Fichier dictionnaire introuvable'
exit 1
fi
echo '' > analyse.txt
for lettre in {A..Z}
do
occurences=`grep $lettre $1 | wc -l | sort -nr` >> analyse.txt
echo "$occurence - $lettre"
done
rm analyse.txt
sans le sort ca passe niquel le nombre d'occurence s'affiche & tous mais avec le sort seule le nombre de lettre s'affiche ..
bah occurences = trouver toute les variable lettre puis compter le nombre de ligne puis trier numériquement et l'ajouter a la fin du fichier analyse.txt
- Edité par JonathanPruvost1 11 juillet 2018 à 17:59:19
grep va afficher les lignes qui contiennent la lettre, mais si la ligne comporte plusieurs fois la lettre, alors wc ne comptera qu'une ligne, et alors wc est inutile car grep sait le faire... (cf. man grep) il faut donc demander à grep d'afficher le motif correspondant uniquement (la lettre), et ensuite compter le nombre de lignes avec wc.
mais pourquoi trier le compte affiché par wc : il n'affiche qu'un chiffre !
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
on voit que les deux dernières commandes sont équivalentes, que wc est donc inutile, et que le compte est erroné : il y a 6 é !
wc doit être utilisé quand grep affiche le motif uniquement correspondant (cf. man grep ! ) sur une nouvelle ligne à chaque occurrence, qu'elle se trouve seule ou plusieurs fois dans une ligne du dictionnaire.
sort doit être utilisé, en dehors de la boucle, quand tout le dictionnaire a été lu
- Edité par dantonq 12 juillet 2018 à 21:30:16
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
desolé du temps de réponse j'ai étais pas mal occupé. j'ai amélioré mon code.
#!/bin/bash
if [ ! $# -ge 1 ] || [ ! -e $1 ]
then
echo 'Fichier dictionnaire introuvable'
exit 1
fi
echo '' > stats.txt
for lettre in {A..Z}
do
occurences=`grep -o $lettre $1 | wc -l`
echo "$occurences - $lettre" >> stats.txt
done
if [ $# -ge 2 ] && [ $2 = '-p' ]
then
total=`wc -m $1`
echo $total
else
sort -nr stats.txt
fi
rm stats.txt
j'aimerais ajouté un deuxiéme paramétre. du genre avec un -p ajouté le pourcentage de lettre utilsé
sauf que la comande wc - m qui est censé compter les caractéres compte egalement le nombre de ligne ce qui est trés pénible comment compter uniquement les caractére sans les lingne ?
sur un dico2.txt j'ai écrit de ( AA juqua ZZ) et au lieux d'avoir a faire un 26 x2 ce qui me donne 52 j'ai un 26 x 3 qui me donne 78 )
c'est génial merci :-) si j'aibien compris awk permet de faire des calcul directement sur les paramétre de la commance wc j'étais en train de faire le même genre de chose en essayant d'affecter des variables puis de les soustraire une galére pour moi je te remercie de ton aide
awk lit des champs sur chaque ligne d'un fichier, ou, ici, de son entrée standard. il ne faut pas confondre les champs de awk et les paramètres positionnels d'un script.
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Reprenez le contrôle à l'aide de Linux !
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique