Remplacer du texte dans plusieurs fichiers en une seule opér

Bonjour,

Je voudrais, pour une série de fichiers, remplacer “droite” par “suivant” dans “droite

Comment le faire en un seule opération avec un script bash ?

Merci

Avec sed -i ça marchera. Si toutes tes occurrences de “droite” sont bien entre des balises je te conseille fortement de remplacer “>droite<” par “>suivant<” et non pas “droite” par “suivant” ça évitera que d’autres mots contenant “droite” ne soient affectés.
Après la commande exacte va dépendre de ta structure de répertoires (tous les fichiers dans un seul, ou bien dans une arborescence ?).

Par exemple :

Si tu as une arborescence tu peux utiliser find pour déterminer la liste des fichiers, que tu passeras à sed par exemple avec xargs ou directement avec l’option -exec de find.

Ce fil aurait mieux eu sa place dans “programmation”.
Tu peux le doubler si tu veux.

Merci syam, c’est tout bon.

J’ai encore un petit problème avec la commande :

sed -i~ ‘s@

suivant
@suivant@g’ *.html

… qui n’a aucun effet. Je crois comprendre que le problème se situe au niveau du deuxième “*” (il faut conserver le nom du fichier mentionné dans href) mais je connais pas la solution.

PS : Désolé ricardo, j’avais pas vu la section “programmation”. Il y a-t-il moyen de déplacer tout en bloc là bas ?

[quote=“François”]sed -i~ ‘s@

suivant
@suivant@g’ *.html

… qui n’a aucun effet. Je crois comprendre que le problème se situe au niveau du deuxième “*” (il faut conserver le nom du fichier mentionné dans href) mais je connais pas la solution.[/quote]
sed a une syntaxe “expressions régulières” et non pas “glob” comme le shell (voir ici : grymoire.com/Unix/Regular.html).

[quote=“François”]Merci syam, c’est tout bon.

J’ai encore un petit problème avec la commande :

sed -i~ ‘s@

suivant
@suivant@g’ *.html

… qui n’a aucun effet. Je crois comprendre que le problème se situe au niveau du deuxième “*” (il faut conserver le nom du fichier mentionné dans href) mais je connais pas la solution.

PS : Désolé ricardo, j’avais pas vu la section “programmation”. Il y a-t-il moyen de déplacer tout en bloc là bas ?[/quote]

Je le fais.

Bonjour

j’ai toujours fait mes recherches avec s/motifachanger/motifremplace/g

Quelle est la différence avec @ à la place de / ?
J’utilise vim mais avec sed je n’ai pas eu de problème avec s/…/…/

Strictement aucune, juste une habitude que j’ai prise. Ça permet d’utiliser / dans les expressions (ce qui m’arrive régulièrement) sans devoir l’échapper, et accessoirement je trouve ça beaucoup plus lisible.

ok il n’y a donc pas différence.
merci pour la réponse.

perl -pE ‘s/regex_a_substituer/remplacement/igms’ ./lesfichiers*

( avec l’avantage de la souplesse et la puissance des regex de Perl )

Merci Syam pour ta solution (qui fonctionne nickel) et le manuel regex. Je pense piger la signification de tous les éléments de ta solution, à l’exception de la fonction du troisième backslash dans “(.*).html”

C’est pour échapper le point, qui est caractère spécial.