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 29/11/2007, 15h10   #1
Nouveau Membre du Club
 
Inscription : juin 2006
Messages : 163
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 163
Points : 29
Points : 29
Par défaut recherche d'une chaine dans une chaine

Bonjour,
Je voudrais dans un script tester la présence d'une chaine de caractères dans une autre.
Je ne trouve rien dans un ce sens. Voici ce que j'ai écrit :
Code :
1
2
3
4
5
6
7
8
9
cpt=0
cat "$arg1/$arg2"|while read line
 do
  if [ $(grep "$arg3" "$line" -i) ]
   then $cpt=$cpt+1
   echo $line
  fi
done
echo "le nbre de lignes est $cpt"
Cela devrait tester si $arg3 est dans $line et si oui on incrémente un compteur.
Or cela ne fonctionne pas car grep cherche dans un fichier et non dans une chaine.
Si quelqu'un a la fonction miracle...

JPC
jpclutier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2007, 17h44   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 310
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 310
Points : 8 592
Points : 8 592
faut faire un echo "..." | grep :
Code :
if [ $(echo "$line" | grep "$arg3" -i) ]
Pour info, y a un flag -q sur grep qui n'affiche rien mais renvoie un statut à 0 ou 1 selon que le grep à trouver qqch ou non. C'est assez pratique justement dans les if.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2007, 16h12   #3
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
En une ligne avec awk


Code :
1
2
 
 awk  'BEGIN{ CPT=0 } /CRITERE1/{ if ( $0 ~ /CRITERERE2/ )  CPT=CPT+1  } END{ print CPT }' FICHIER
becket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 11h30   #4
Nouveau Membre du Club
 
Inscription : juin 2006
Messages : 163
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 163
Points : 29
Points : 29
Par défaut Merci à tous les deux

Il faut que je bûche awk...
jpclutier 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 +2. Il est actuellement 01h56.


 
 
 
 
Partenaires

Hébergement Web