Bonjour,
je n'arrive pas à créer mon script en ksh pour répondre à cet algo :
MOT_A_CHERCHER=papa
CHAINE=maman,papa,enfant
SI MOT_A_CHERCHER est dans CHAINE
on affiche 'chaine trouve'
SINON
on affiche 'chaine absente'
Merci d'avance![]()
Bonjour,
je n'arrive pas à créer mon script en ksh pour répondre à cet algo :
MOT_A_CHERCHER=papa
CHAINE=maman,papa,enfant
SI MOT_A_CHERCHER est dans CHAINE
on affiche 'chaine trouve'
SINON
on affiche 'chaine absente'
Merci d'avance![]()
Exemple
MOT_A_CHERCHER=papa
CHAINE=maman,papa,enfant
La commande ci-dessous permet de trouver toute les lignes qui contiennent le motif "papa"
Maintenant si tu veux afficher le message "chaine trouvee"
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo ${CHAINE} | grep "papa"
Remarques
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 NBR_CHAINE_TROUVE=`echo ${CHAINE} | grep "papa" | wc -l` if [[ ${NBR_CHAINE_TROUVE} == 0 ]] then printf "%b" "Info : Chaine absente\n" else printf "%b" "Info : Chaine trouvee\n" fi
1- il y a certainement plus intelligent
2- `-> correspond au caractère qui se trouve sur la touche 7
emmachane: il faut ajouter -o à grep pour obtenir le nombre d'occurrences :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 MOT_A_CHERCHER="papa" CHAINE="maman,papa,enfant" if [[ $MOT_A_CHERCHER =~ $CHAINE ]] then echo "chaine trouvée" else echo "chaine absente" fi # ou, pour des conditions aussi simples # [[ $MOT_A_CHERCHER =~ $CHAINE ]] && echo "chaine trouvée" || echo "chaine absente"
Code : Sélectionner tout - Visualiser dans une fenêtre à part grep -o $MOT_A_CHERCHER <<<"$CHAINE" | wc -l
Merci à tous les deux pour vos réponses. C'est ce que je faisais avant de poser la question mais je n'arrivais pas au résultat voulu. Si on utilise la commande : echo ${CHAINE} | grep "papa" | wc -l , on ne passera jamais dans le if [[ ${NBR_CHAINE_TROUVE} == 0 ]] car la commande retourne [espaces]1. Il faut donc rajouter un sed qui supprime les espaces :
echo ${CHAINE} | grep "papa" | wc -l | sed 's/^ *//'
Merci encore !!
...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 nb=( $(grep -o "papa" <<<"$CHAINE") ) nb=${#nb[@]} if ((nb)) then printf 'Chaîne présente %dx\n' $nb else echo "Chaîne absente" fi
?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager