Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 18/01/2010, 21h38   #1
Invité régulier
 
yassin
Inscription : mars 2007
Messages : 89
Détails du profil
Informations personnelles :
Nom : yassin

Informations forums :
Inscription : mars 2007
Messages : 89
Points : 8
Points : 8
Par défaut Questions sur un filtre egrep

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/sh
set -x
FIC='lesmots.txt'
if [ $# -ne 1 ]
then echo "usage $0 mot_a_verifier"
else
echo "vérification de $1"
motif="\<$1\>"
if [ `egrep $motif $FIC | wc -l` -ne 0 ]
then echo "OK"
else echo "KO"
fi
fi
1er FIC='lesmots.txt' est correcte en ouvre pas le fichier avec la commande cat>fichier
2em motif="\<$1\>" pourquoi $1 et entre \< \> je connais pas sa
en peut pas ecrire $1 directement dans egrep , merci d'avance
yassin123441 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2010, 22h32   #2
Membre chevronné
 
Inscription : septembre 2007
Messages : 685
Détails du profil
Informations personnelles :
Âge : 48
Localisation : Suisse

Informations forums :
Inscription : septembre 2007
Messages : 685
Points : 723
Points : 723
Pour le motif de grep (pas besoin de egrep), ceci:
Code :
if [ `grep "<$1>" $FIC | wc -l` -ne 0 ]
fonctionne correctement chez moi.
__________________
Un problème bien posé est déjà résolu (H. Bergson).
jmelyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2010, 23h31   #3
Expert Confirmé
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 1 896
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 1 896
Points : 3 676
Points : 3 676
Bonjour yassin,

Bonjour jmelyn,

Il semble que les contre-obliques sont nécessaires : man grep
Citation:
Les symboles \< et \> correspondent respectivement à une chaîne vide en début et en fin de mot.
On peut se dispenser de wc :
Code :
if [ `grep -c "\<$1\>" $FIC` -ne 0 ]
voire même du if :
Code :
grep "\<$1\>" >/dev/null && echo "OK" || echo "KO"
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2010, 07h33   #4
Membre chevronné
 
Inscription : septembre 2007
Messages : 685
Détails du profil
Informations personnelles :
Âge : 48
Localisation : Suisse

Informations forums :
Inscription : septembre 2007
Messages : 685
Points : 723
Points : 723
Tu as raison N_BaH au sujet des '\<' et '\>'. Je pensais qu'il s'agissait de trouver le mot entouré de '<' et '>', comme une balise xml. Dans le cas de la commande GNU grep, comme sur Linux, on peut utiliser l'option -q:
Code :
grep -q "\<$1\>" && echo "OK" || echo "KO"
__________________
Un problème bien posé est déjà résolu (H. Bergson).
jmelyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2010, 01h52   #5
Invité régulier
 
yassin
Inscription : mars 2007
Messages : 89
Détails du profil
Informations personnelles :
Nom : yassin

Informations forums :
Inscription : mars 2007
Messages : 89
Points : 8
Points : 8
merci j'ai comprit. se dispense de if et utilise && et || sa ma trop aide dans les exercices
yassin123441 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 12h24.


 
 
 
 
Partenaires

Hébergement Web