Re : Prb de recherche de chaines de caratères...

Ces forums sont actuellement fermés. Vous ne pouvez donc plus y poster de messages. Les sujets existants sont toutefois conservés pour historique.

Sujet en cours de lecture : Prb de recherche de chaines de caratères... par | (Haut de page) |


Re : Prb de recherche de chaines de caratères...

Tian Envoyé le : 17/11/2004 à 12:10
Bonjour,
Geeko74 a dit :
Bonjour à tous !
Je crée actuellement un script sous bash et j'ai des difficultés à effectuer une recherche sur une chaine de caratère particulière qui contient un $ :
$smarty

Voici la commande que j'utilise :
find . -name "*" | xargs grep "\$smarty"
Mais cette commande me retourne en plus des chaines correctes, des chaines de ce style : printf($params['format'],$smarty_math_ result);

Or je ne voudrais que les ligne qui contiennent exactement $smarty et pas celles du genre $smarty_math_result.

Le probleme est de savoir qu'est-ce qui doit definir la fin d'une chaine. Dans votre cas, vous souhaitez apparemment que l'arret de la chaine a rechercher soit marque par la presence d'un caractere autre qu'une lettre, un chiffre ou un underscore. Dans ce cas, il faudrait faire quelque chose comme ceci :find . -name "*" | xargs grep "\$smarty[^a-zA-Z0-9_]" Par contre, ca risque de ne pas fonctionner si $smarty est la derniere chaine d'une ligne.
Geeko74 a dit :

Par ailleurs, je voudrais par la suite, faire un script qui remplacerait "$smarty"
par une autre : "$smarty_M4X" et ce sans changer celles du genre $smarty_math_result.
Merci
En utilisant l'expression reguliere precedente avec sed cela devrait fonctionner :sed "s/\(\$smarty\)\([^a-zA-Z0-9_]\)/\1_M4X \2" fichier1 > fichier2 Attention, il ne faut pas que fichier1 et ficher2 soient le meme fichier sinon les donnees presentes seront perdues. Il faut passer par un fichier temporaire comme cela est par exemple fait dans le script migrate  

Réponses...


Date serveur : 12/10/2008 à 19:51
Les heures sont affichées en GMT +2 (Heure d'été)