Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Rechercher un mot dans une phrase
Envoyé par: Lil'one

Slt,

Quelle est la commande pour rechercher une expression dans une phrase, hormis la fonction GREP.


ex: toto adore lea-linux.

je veux chercher le mot lea dans la phrase quand je balaye le fichier ligne par ligne ??

Merci à tous.

Poste le Thursday 23 February 2006 14:55:17
Répondre     Citer    
Re: Rechercher un mot dans une phrase
Envoyé par: cancerus

Hello,

Peux-tu préciser ta question ?
C'est toute la ligne dans laquelle le mot que tu recherches est contenue que tu veux ?
Quel type de traitement veux-tu réaliser ensuite ?

Qu'est-ce qui t'empêche d'utiliser GREP ?

Au cas où, voilà une réponse avec :

cat Ton_Fichier | while read line
do
LA_LIGNE=`echo $line | grep lea`
done

A plus tard.

Poste le Thursday 23 February 2006 15:57:12
Répondre     Citer    
Re: Rechercher un mot dans une phrase

Moi non plus je n'ai pas compris la question initiale.

Outre grep auquel on peut passer l'option -w[/w] (comme word = mot) pour chercher un mot (de sorte que grep -w ab ne trouvera pas la ligne abc), il y a fgrep qui cherche un mot exact (et non pas une expression régulière) et aussi agrep.

Pourquoi grep -w lea ou fgrep -w lea ne convient pas?

De plus un grand nombre de langages de script (dont Ruby, Ocaml, Perl, Python) fournissent des expressions regulières (regexp) qui sont très utiles.

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Thursday 23 February 2006 18:45:58
Répondre     Citer    
Re: Rechercher un mot dans une phrase
Envoyé par: Sve@r

Citation
Lil'one
Slt,

Quelle est la commande pour rechercher une
expression dans une phrase, hormis la fonction
GREP.


ex: toto adore lea-linux.

je veux chercher le mot lea dans la phrase quand
je balaye le fichier ligne par ligne ??

Merci à tous.

Alors juste pour le fun (et le plaisir d'écrire du shell), voici un moyen de dire si un mot "$mot" se trouve dans une ligne "$ligne" sans passer par "grep"

#!/bin/sh

# Récupération longueur mot et ligne
lgMot=`expr $mot : ".*"`
lgLig=`expr $ligne : ".*"`

# Boucle sur chaque mot de la ligne
i=1
fin=`expr $i + $lgMot`
while test $fin -le $lgLig
do
....# Test si la zone commençant à "i" correspond au mot
....if test "`echo $ligne |cut -c$i-$fin`" = "$mot"
....then
........echo "$mot est présent"
....fi

....i=`expr $i + 1`
....fin=`expr $fin + 1`
done

A titre comparatif, voici la même chose en utilisant "grep"
#!/bin/sh

# Test si le mot est dans la ligne
if echo $ligne |fgrep "$mot" 1>/dev/null
then
....echo "$mot est présent"
fi

De mon point de vue, ya pas photo...

Citation
Basile STARYNKEVITCH
il y
a fgrep qui cherche un mot exact (et non pas une
expression régulière) et aussi agrep.

Tiens ? je connaissais "egrep" mais pas "agrep". Faudra que j'examine cette commande...:-)


L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Thursday 23 February 2006 19:39:40
Répondre     Citer    
Re: Rechercher un mot dans une phrase

Citation
Sve@r
Tiens ? je connaissais "egrep" mais pas "agrep".
Faudra que j'examine cette commande...

je la connais de nom, grâce à Xavier Leroy:

[cristal.inria.fr]

je n'ai jamais encore ressenti le besoin d'utiliser ce genre de choses.

Cordialement

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Thursday 23 February 2006 21:30:57
Répondre     Citer    
Re: Rechercher un mot dans une phrase

Citation
Sve@r
Alors juste pour le fun (et le plaisir d'écrire du
shell), voici un moyen de dire si un mot "$mot" se
trouve dans une ligne "$ligne" sans passer par
"grep"

Rhooo, allez pour le plaisir :

 if [ ${ligne/$mot//} != $ligne ] 
 then echo "mot trouve" 
  fi

Un peu plus dur, la meme chose pour un fichier
IFS='\n'
 for ligne in  $( cat 1fichier  ) 
 do 
if [ ${ligne/$mot//} != $ligne ] 
  then echo "mot trouve" 
  fi 
 done



--
Brugmans Frédéric

[www.brugmans.net]
[triathlon.sport-challenge.be]

Poste le Thursday 23 February 2006 21:46:36
Répondre     Citer    
Re: Rechercher un mot dans une phrase
Envoyé par: Sve@r

Citation
Frédéric Brugmans
Un peu plus dur, la meme chose pour un fichier
IFS='\\n'
 for ligne in  $( cat 1fichier  ) 
 do 
if [ ${ligne/$mot//} != $ligne ] 
  then echo "mot trouve" 
  fi 
 done

RHAAA ! J'ai horreur qu'on touche à l'IFS quand ce n'est pas absolument nécessaire...
exec 3<fichier
while read ligne 0<&3 
 do 
if [ ${ligne/$mot//} != $ligne ] 
  then echo "mot trouve" 
  fi 
 done

Mais si on y touche (shame on you yawning smiley)), alors faisons-le proprement et remettons-le en état après avoir imprudemment joué avec...
old="$IFS";IFS='\n'
 for ligne in  $( cat 1fichier  ) 
 do 
if [ ${ligne/$mot//} != $ligne ] 
  then echo "mot trouve" 
  fi 
 done
IFS="$old";unset old
:chef:


L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Friday 24 February 2006 13:53:03
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Rechercher un mot dans une phrase
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons