bonjour,
je suis à la recherche d'un programme me permettant de chercher des motifs (via des regexp) dans différents fichiers d'une arborescence, afin d'y effectuer des remplacements en série, sachant que les chaines que je veux insérer, contiendront des bouts de chaines matchées (entendre par là les références arrières)
Bref je sais pas si c'est très clair, donc un ptit exemple :
je recherche
"plop (.+?), ca va \?" --> va matcher "plop cho7, ca va ?"
et je remplace par
"salut (\1), ca va \?" --> va remplacer par "salut cho7, ca va ?"
Voilou, je vous remercie pour votre aide
# Précision
Posté par cho7 (site web personnel) . Évalué à 2.
[^] # Re: Précision
Posté par totof2000 . Évalué à 2.
$1 fait reference a l'expression entre parenthese (equivalent a \1 de sed).
[^] # Re: Précision
Posté par symoon . Évalué à 2.
http://linuxfr.org/comments/381801.html#381801(...)
perl -pi -e 'la_regex' tesfichiers
[^] # Re: Précision
Posté par Gyro Gearllose . Évalué à 1.
Un script php qui ouvre le fichier passé en paramètre et fait les modifs à grand coup de preg_replace ligne après ligne...
Un script shell qui se charge de chercher les fichiers voulus et les passe au script ci-dessus.
Il doit certainement y avoir moyen de faire mieux. Probablement à coup de sed, mais c'est une commande que j'utilise peu, et connais donc mal.
Un des trucs que je trouve génial avec la commande preg_replace de php, c'est que tu peux tout faire avec un seul appel , en utilisant des tableaux de paramèters ! Petit exemple ? Ok :
$x=0;
$match{$x] = "Coucou"; $replace[$x++] = "Bonjour";
$match[$x] = "Bye"; $replace{$x++] = "Au revoir";
...
$chaine = "Coucou machin
jksdlqj
blablabla....
....
Bye.";
$out = preg_replace ($match, $replace, $chaine);
Remplace Coucou par Bonjour et Bye par Au revoir...
Je ne pense pas que ce soit possible avec sed....
Voilà, une fois de plus, j'espère t'avoir aidé et n'avoir pas dit trop d'aneries...
# Merci
Posté par cho7 (site web personnel) . Évalué à 2.
J'ai néanmoins trouvé le programme que je cherchais, il marche du feu de dieu (expressions perl ^^) : regexxer
Merci apt-get :)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.