protection d'expression régulière / shell / grep

protection d'expression régulière / shell / grep - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 18-12-2006 à 11:53:43    

salut les gens,

 

connaitriez-vous une option de grep ou un outil qui protège une expression régulière?

 

je m'explique : j'ai un petit script shell avec un for i in blabla; do grep -e "^$i$" machin.csv; done

 

Le problème est que $i peut contenir des caractères spéciaux d'expression régulière, tels que [, ], +, etc

 

donc, je voudrais une petite option de grep ou un outil du shell ou autre qui prenne en entrée ma variable et me donne en sortie la chaine de caractère avec les caractères spéciaux protégés.

 

vous connaissez?

 

merci pour les tuyaux

 

:hello:

 

--edit--

 

pour les esprits chagrins, oui j'ai RTFM et STFW :o


Message édité par arghbis le 18-12-2006 à 11:54:46
Reply

Marsh Posté le 18-12-2006 à 11:53:43   

Reply

Marsh Posté le 18-12-2006 à 12:01:00    

cf les dernières réponses:
 
==> http://forum.hardware.fr/hfr/OSAlt [...] 0687_1.htm


Message édité par macfennec le 18-12-2006 à 12:01:14
Reply

Marsh Posté le 18-12-2006 à 12:07:31    

voui mais non. Je sais comment faire pour protéger une chaine de caractères. Mais le faire automagiquement sur des variables, je ne sais point. Et je ne peux pas utiliser directement l'option pour ne pas interprêter la chaine comme une regex, sinon je ne peux utiliser les ^ et $ pour indiquer le match complet

 

mais merci quand même

 

--edit--

 

mais ça me donne une idée, en utilisant le -F et le -x ça devrait le faire! :hello:


Message édité par arghbis le 18-12-2006 à 12:08:40
Reply

Marsh Posté le 18-12-2006 à 12:51:48    

bon ça marche pas. Il m'interprête quand même ma variable comme une regexp...

 

d'autres idées?

 

--edit--
j'ai rien dit, le message d'erreur venait d'un grep non corrigé


Message édité par arghbis le 18-12-2006 à 13:42:05
Reply

Marsh Posté le 18-12-2006 à 13:46:13    

Ca donne quoi avec egrep ou grep -E ?


Message édité par Xavier_OM le 18-12-2006 à 13:47:15

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 18-12-2006 à 13:58:44    

ben ça peut pas marcher puisque justement, ça force l'interprétation en tant qu'expresiion régulière et que je veux le comportement inverse.

Reply

Marsh Posté le 18-12-2006 à 14:08:56    

ah j'avais compris l'inverse excuse moi
euh un ptit coup de sed :o ?
genre sed -e 's/([;<>\*\|`&\$!#\(\)\[\]\{\}:'"])/\\$1/g'


Message édité par Xavier_OM le 18-12-2006 à 14:14:37

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 18-12-2006 à 15:10:51    

non mais c'est bon, avec un grep -F -x ${i} blabla.csv, ça marche ;-)
 
mais sinon, oui, j'avais pensé à sed
 
merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed