Le plus court mot
wakk
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
Hello!
Je suis sur l'exercice suivant:
Écrire un script, nommé plusCourtMot, prenant en argument le nom d'un dictionnaire (un fichier non vide contenant des mots en français, chacun sur une unique ligne sans blanc superflu) et extrayant (dans l'ordre de ce dictionnaire) les mots de plus courte longueur.
% cat dict1
coucou
le
chien
% cat dict2
le
la
joue
% plusCourtMot dict1
le
% plusCourtMot dict2
le
la
Voici le script que j'ai écrit, mais qui est visiblement incorrect:
#! /bin/bash
mot=""
MAX_L=25
c='wc -m $1'
while read line; do
if [[ $c -lt $MAX_L ]];then
MAX_L=$c
mot=$line
fi
done < $1
echo $((mot))
Mon but est de comparer la valeur retournée par wc -m (compter les caracctères) avec celle de MAX_L. Si c est inférieur à 25 j'affecte à MAX_L la valeur de c, puis à mot j'affecte le mot sur lequel j'ai travaillé. Et cela se fait jusqu'à la fin du fichier.
Selon moi, il y a une première erreur au niveau de la déclaration de c:
c='wc -m $1' je ne suis pas sur que wc -m compte le nbre de caractère d'un mot, mais plus d'un fichier.
Si quelqu'un peut m'aider à corriger ce script ça serait tres gentil à lui.
Merci
Je suis sur l'exercice suivant:
Écrire un script, nommé plusCourtMot, prenant en argument le nom d'un dictionnaire (un fichier non vide contenant des mots en français, chacun sur une unique ligne sans blanc superflu) et extrayant (dans l'ordre de ce dictionnaire) les mots de plus courte longueur.
% cat dict1
coucou
le
chien
% cat dict2
le
la
joue
% plusCourtMot dict1
le
% plusCourtMot dict2
le
la
Voici le script que j'ai écrit, mais qui est visiblement incorrect:
#! /bin/bash
mot=""
MAX_L=25
c='wc -m $1'
while read line; do
if [[ $c -lt $MAX_L ]];then
MAX_L=$c
mot=$line
fi
done < $1
echo $((mot))
Mon but est de comparer la valeur retournée par wc -m (compter les caracctères) avec celle de MAX_L. Si c est inférieur à 25 j'affecte à MAX_L la valeur de c, puis à mot j'affecte le mot sur lequel j'ai travaillé. Et cela se fait jusqu'à la fin du fichier.
Selon moi, il y a une première erreur au niveau de la déclaration de c:
c='wc -m $1' je ne suis pas sur que wc -m compte le nbre de caractère d'un mot, mais plus d'un fichier.
Si quelqu'un peut m'aider à corriger ce script ça serait tres gentil à lui.
Merci
A voir également:
- Le plus court mot
- Trousseau mot de passe iphone - Guide
- Mot de passe - Guide
- Comment trouver le mot de passe wifi sur son téléphone - Guide
- Mot de passe administrateur - Guide
- Mot de passe bios perdu - Guide
3 réponses
c='wc -m $1'
non
PS: ne faites pas attention, c'est le site qui n'affiche pas correctement les backticks :(
non
c='wc -m $1'ou mieux
c=$(wc -m $1)
PS: ne faites pas attention, c'est le site qui n'affiche pas correctement les backticks :(
Pour ton problème il vaudrait mieux faire un truc du genre :
- Déterminer la ligne la plus courte et le nombre de lettres (stocker le résultat dans une variable)
- Lire le fichier ligne par ligne, compter son nombre de lettres et le comparer avec la variable du dessus. Si égal, afficher la ligne...
;-))
- Déterminer la ligne la plus courte et le nombre de lettres (stocker le résultat dans une variable)
- Lire le fichier ligne par ligne, compter son nombre de lettres et le comparer avec la variable du dessus. Si égal, afficher la ligne...
$ cat dic1 coucou le chien la les moi tu il nous $ ./pluscourt.sh dic1 le la tu il $
;-))