cela est mon script bash pour l'exercice final "il n'est pas encore fini". bref avec des fichier contenant un nombre pas important des mots sa fonctionne parfaitement mais avec le fichier dico.txt proposé s'a pris plus qu'une heure pour afficher de résultat, chose qui n'est pas bien.
là, effectivement, tu te compliques la vie. Tu compares lettre par lettre du fichier 26 fois. Et ça fait beaucoup
L'objectif: "vous devez extraire le nombre de mots utilisant chaque lettre de l'alphabet de A à Z." Autrement dit combien le nombre de mot qui utilisent la lettre A puis le nombre de mot qui utilisent la lettre B, etc..., jusqu'à Z. Donc si une lettre est présente une ou plusieurs fois dans un mot ( comme A dans Abracadabra) ça compte comme une occurrence ( et non cinq comme dans l'exemple précédent).
Maintenant, tu n'as donc pas à faire lettre par lettre mais mot par mot. ( indice qui peut te faciliter la vie: A n'est qu'une chaîne de caractère de un caractère et il n'y a qu'un mot par ligne).
PS:
for lettre in "abcdefghijklmnopqrstuvwxyz"
# équivaut à
for lettre in {a..z}
c'est plus simple et ça évite de faire une erreur de frappe dans l'alphabet ( comme un k à la place du q)
j'ai essayé cette expression qui marche bien seul:
# cat file.txt | grep '[Aa]'| wc -l
mais je trouve du mal a l'intégrer dans un script bash comme celui ci:
#!/bin/bash
for i in {A..Z}; do
let "val = 0"
let "val=$(cat file.txt | grep -i '$i'| wc -l)"
echo "$val - $i" >> /root/cours/re.txt
done
ce code qui me ramène comme résultat:
0 - A
0 - B
0 - C
0 - D
0 - E
0 - F
0 - G
0 - H
0 - I
0 - J
0 - K
0 - L
0 - M
0 - N
0 - O
0 - P
0 - Q
0 - R
0 - S
0 - T
0 - U
0 - V
0 - W
0 - X
0 - Y
0 - Z
- Edité par HaythemFerjani 27 février 2018 à 12:08:13
ne retourne pas la valeur de la variable i car tu a mis des simple quotes ceux qui échappent le caractère $
donc il faut les remplacer par des double quotes
let "val=$(cat file.txt | grep -i "$i"| wc -l)"
2) Optimisation , tu peux exécuter directement grep sur le fichier sans passer par cat , et utiliser l'option -c (count) pour éviter l'usage de la commande wc -l
Moi j'ai réussi, avec des heures de recherche, et surtout un parcours d'apprentissage complet dans un autre langage. Je veux bien partager ma solution et en discuter. Simplement avec le cours, sans expérience de programmation autre, ça me paraît "chaud".
c'est clair qu'il faut etre deja initié pour réussir le TP final...
Exercice Final Reprenez le contrôle à l'aide de L
× 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.
Ubuntu est un terme Bantou qui signifie :"Slackware est trop compliqué pour moi"
En matière de sécurité, 90% des soucis sont au niveau de l'interface chaise/clavier