OVH Cloud OVH Cloud

[HS] remplacer une portion de texte dans un fichier

15 réponses
Avatar
andre_debian
Je souhaite remplacer une portion de texte,
dans un fichier .jsp entre les expressions :
<center> ...texte =E0 supprimer...</td>
par :
<center></td>

J'ai vainement tout essay=E9 avec "preg_replace" (php) dont :
$new_string =3D preg_replace(<center>(.*)",</td>",$string);
et=20
avec "sed" :
sed '/^center.*td$/d' fichier.jsp

Merci d'une aide.

Andr=E9

5 réponses

1 2
Avatar
Klaus Becker
Le Samstag 03 Oktober 2015, 20:46:38 a
écrit :
On Saturday 03 October 2015 19:40:43 Klaus Becker wrote:
> Le Samstag 03 Oktober 2015, 14:54:08 François Meyer a écrit :
> je n'ai plus le mel d'origine, mais comme ça, ça devrait être
>
> compréhensible :
> > Je souhaite remplacer une portion de texte,
> > dans un fichier .jsp entre les expressions :
> > <center> ...texte à supprimer...</td>
> > par : <center></td>
>
> $ cat text.txt
> <center>texte à supprimer</td>
>
> $ sed 's#<center>.*</td>#<center></td>#g' text.txt
> <center></td>
>
> Il ne faut pas utiliser "/" comme séparateur parce qu'il fait
> partie du texte à traiter (</td>)

Oui et merci, ceci marche bien, comme déjà répondu.

Maintenant ce sont les apostrophes " ' " qui coincent.
Retirer : document.write('

J'ai essayé ça :
sed "s#document.write('##g" fichier.jsp
mais marche pas...

André



J'ai essayé :

$ cat texte.txt
document.write('

$ sed "s/document.write('//g" texte.txt
affiche une ligne vide, donc ça marche

Klaus
Avatar
andre_debian
On Saturday 03 October 2015 21:03:37 Klaus Becker wrote:
Le Samstag 03 Oktober 2015, 20:46:38
> > > Je souhaite remplacer une portion de texte,
> Maintenant ce sont les apostrophes " ' " qui coincent.
> Retirer : document.write('

> J'ai essayé ça :
> sed "s#document.write('##g" fichier.jsp
> mais marche pas...

J'ai essayé :
$ cat texte.txt
document.write('
$ sed "s/document.write('//g" texte.txt
affiche une ligne vide, donc ça marche.
Klaus



Il m'a fallu ajouter ceci :
sed "s/document.write('//g" fichier.jsp

Et c'est tout bon. Vielen Dank.

Enfin :
sed -i "s/&eacute;v&eacute;nement/&Eacute;v&eacute;nement/g" fichier.jsp
donne :
"&eacute;&eacute;&eacute;&Eacute;nement"

Étrange, c'est le + simple et ça déconne...

André
Avatar
Alexandre Hoïde
On Sat, Oct 03, 2015 at 11:17:12PM +0200, wrote:
sed -i "s/&eacute;v&eacute;nement/&Eacute;v&eacute;nement/g" fichier.jsp
donne :
"&eacute;&eacute;&eacute;&Eacute;nement"

Étrange, c'est le + simple et ça déconne...



Dans la partie « remplacer par » de la substitution, le '&' (pour Sed)
est une référence à la portion correspondante du motif de recherche.
Pour un '&' litéral il faut une protection '&' (euh, peut-être doubler
le '' pour le bash avec tes guillemets doubles, j'ai un doute).

Bon ouik !

--
 ___________________
| $ post_tenebras ↲ |       waouh !
| GNU         /    |      /
|          -- * --  |     o
| $ who ↲    /     |_-- ~_|
| Alexandre Hoïde   |  _/| |
 -------------------
Avatar
Charles Plessy
Le Sat, Oct 03, 2015 at 11:17:12PM +0200, a écrit :

Enfin :
sed -i "s/&eacute;v&eacute;nement/&Eacute;v&eacute;nement/g" fichier.jsp
donne :
"&eacute;&eacute;&eacute;&Eacute;nement"

Étrange, c'est le + simple et ça déconne...



Bonjour,

désolé du HS dans le HS, mais c'est irrésistible:

Cette discussion me rappelle la meilleure réponse de tous les temps sur
StackOverflow, à la question de quelqu'un voulant parser du XHTML avec des
expressions rationelles.

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454

Mythiquement,

Charles

PS: ceci dit, j'en convient que lorsque j'ai moi-même tenté d'utiliser un outil
dédié (xmlstarlet), il m'a fallu me taper la tête contre les murs pendant des
heures avant d'arriver à un résultat.

--
Charles Plessy
Tsurumi, Kanagawa, Japon
Avatar
Alexandre Hoïde
On Sat, Oct 03, 2015 at 11:54:26PM +0200, Alexandre Hoïde wrote:
Dans la partie « remplacer par » de la substitution, le '&' (pour Sed)
est une référence à la portion correspondante du motif de recherche.




Je me suis mal exprimé. Dans la partie « remplacer par », Sed
interprète le '&' comme une référence à la portion du texte qui
correspond au motif de recherche, dans l'espace courant.

Et puisque j'en suis à pinailler : dans l'expression rationnelle du
« document.write », le point littéral devrait être protégé aussi. Je
sais que tu le sais, mais je sais aussi que tu sais qu'on l'oublie
facilement, hein ?!

o/

--
 ___________________
| $ post_tenebras ↲ |       waouh !
| GNU         /    |      /
|          -- * --  |     o
| $ who ↲    /     |_-- ~_|
| Alexandre Hoïde   |  _/| |
 -------------------
1 2