OVH Cloud OVH Cloud

Commande Shell entre GREP et FIND -exec ?

2 réponses
Avatar
playload
Salut a tous,

Je cherche une commande qui, a la facon de "GREP", ferais une recherche
de regexp dans une fichier texte, et a la facon de "FIND" (avec son
optin -exec), ex=E9cuterai une commande sur chaque "match".

recherche dans fichier txt (regexp) ------> 1er Match ----->
execution d'une commande ---------> poursuite de la recherche
--------> 2eme Match -----------> execution d'une commande ----------->
poursuite de la recherche ........ etc, etc, jusqu'a la fin de la
recherche dans le fichier.

Je pense que "Perl" le fait tres bien, mais je n'ai pas le niveau...
C'est pour ca que je recherche une commande Shell.

Avez vous une id=E9e ?

J'esp=E8re avoir =E9t=E9 assez claire...

Merci d'avance et @ +.

2 réponses

Avatar
Fabien LE LEZ
On 11 Aug 2006 01:15:35 -0700, "playload" :

Je cherche une commande qui, a la facon de "GREP", ferais une recherche
de regexp dans une fichier texte, et a la facon de "FIND" (avec son
optin -exec), exécuterai une commande sur chaque "match".


grep --no-filename -Z --only-matching a_chercher |xargs -0 la_commande

Tu peux éventuellement rajouter "--max-args=1" après "xargs".
Cf man de grep et de xargs pour plus d'infos.

Avatar
playload
Super merci Fabien,

C'est l'option "--max-args=1" dont j'avais besion pour "xargs". Je ne
connaissais pas.

il ne me reste qu'un petit problème, voici ma commande complète :

MXXXXX:/home/xxxxxx# grep -o "[ <TAB>]+[0-9]{10}[ <TAB>]+" ex.txt
|xargs -p -x --max-args=1 mysql contact -e 'select * from data where
tph='
mysql contact -e select * from data where tph= 0873757757 ?...y


(-p pour le bébogage.) et là, bien sur plantage, car pas moyen de
conserver les ' de la commande mysql.

Y a t'il un moyen pour corriger ?

Le but final est d'extraire des n° de tph d'un fichier txt, et de les
traduire par un nom en interrogent une base Mysql.

Merci pour votre aide précieuse. @+



On 11 Aug 2006 01:15:35 -0700, "playload" :

Je cherche une commande qui, a la facon de "GREP", ferais une recherche
de regexp dans une fichier texte, et a la facon de "FIND" (avec son
optin -exec), exécuterai une commande sur chaque "match".


grep --no-filename -Z --only-matching a_chercher |xargs -0 la_commande

Tu peux éventuellement rajouter "--max-args=1" après "xargs".
Cf man de grep et de xargs pour plus d'infos.