Re: [HS] remplacer une portion de texte dans un fichier

2015-10-03 Par sujet 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   |  _/| |
 ---



Re: [HS] remplacer une portion de texte dans un fichier

2015-10-03 Par sujet Charles Plessy
Le Sat, Oct 03, 2015 at 11:17:12PM +0200, andre_deb...@numericable.fr a écrit :
> 
> Enfin :
> sed -i "s/événement/Événement/g"   fichier.jsp
> donne :
> "éééÉ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



Re: [HS] remplacer une portion de texte dans un fichier

2015-10-03 Par sujet Alexandre Hoïde
On Sat, Oct 03, 2015 at 11:17:12PM +0200, andre_deb...@numericable.fr wrote:
> sed -i "s/événement/Événement/g"   fichier.jsp
> donne :
> "éééÉ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   |  _/| |
 ---



Re: [HS] remplacer une portion de texte dans un fichier

2015-10-03 Par sujet andre_debian
On Saturday 03 October 2015 21:03:37 Klaus Becker wrote:
> Le Samstag 03 Oktober 2015, 20:46:38 andre_deb...@numericable.fr
> > > > 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/événement/Événement/g"   fichier.jsp
donne :
"éééÉnement"

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

André




Re: [HS] remplacer une portion de texte dans un fichier

2015-10-03 Par sujet Klaus Becker
Le Samstag 03 Oktober 2015, 20:46:38 andre_deb...@numericable.fr 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 :
> > >  ...texte à supprimer...
> > > par :  
> > 
> > $ cat text.txt
> > texte à supprimer
> > 
> > $ sed 's#.*##g' text.txt
> > 
> > 
> > Il ne faut pas utiliser "/" comme séparateur parce qu'il fait
> > partie du texte à traiter ()
> 
> 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



Re: [HS] remplacer une portion de texte dans un fichier

2015-10-03 Par sujet andre_debian
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 :
> >  ...texte à supprimer...
> > par :  
 
> $ cat text.txt 
> texte à supprimer
> 
> $ sed 's#.*##g' text.txt 
> 
> 
> Il ne faut pas utiliser "/" comme séparateur parce qu'il fait partie 
> du texte à traiter ()
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é



Re: [HS] remplacer une portion de texte dans un fichier

2015-10-03 Par sujet Klaus Becker
Le Samstag 03 Oktober 2015, 14:54:08 François Meyer a écrit :

Bonjour,


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 :
>  ...texte à supprimer...
> par :
> 

$ cat text.txt 
texte à supprimer

$ sed 's#.*##g' text.txt 


Il ne faut pas utiliser "/" comme séparateur parce qu'il fait partie 
du texte à traiter ()

bonne soirée

Klaus




Re: [HS] remplacer une portion de texte dans un fichier

2015-10-03 Par sujet andre_debian
On Friday 02 October 2015 23:14:07 Sylvain L. Sauvage wrote:
> Le vendredi 2 octobre 2015, 22:23:03 andre_deb...@numericable.fr 
> a écrit :
>   Donc : sed -e 's:.*::'
> (':' sert ici de séparateur pour les arguments de 's', '/' 
> faisant partie de l’expression, ça évite d’avoir à le protéger.)


"sed -e 's:.*::' fichier.jsp"
modifie très bien, merci.

Je me heurte encore aux apostrophes " ' " :

sed -e  "s/document.write('//g"  fichier.jsp
ou
sed -e  "s/document.write(\'//g"  fichier.jsp
ou
sed -e  "s:document.write(\'::"  fichier.jsp

ne me retirent pas : "document.write(\'

André





Re: [HS] remplacer une portion de texte dans un fichier

2015-10-03 Par sujet François Meyer

Bonjour,

Dans ce genre de cas, s'il ne doit pas y avoir de balise <...> avant la 
,  j'ouvrirais le fichier  dans Emacs, puis :


query-remplace-regexp (M-C-%)

regexp à replacer : [^<]+

chaîne de remplacement : 

Cela va marcher même avec des sauts de ligne.


Sinon...je ne sais pas. La réponse m'intéresse aussi.

François



Re: [HS] remplacer une portion de texte dans un fichier

2015-10-02 Par sujet Jean-Marc
Fri, 2 Oct 2015 21:57:27 +0200
andre_deb...@numericable.fr écrivait :

> Je souhaite remplacer une portion de texte,
> dans un fichier .jsp entre les expressions :
>  ...texte à supprimer...
> par :
> 
> 
> J'ai vainement tout essayé avec "preg_replace" (php) dont :
> $new_string = preg_replace((.*)",",$string);
> et 
> avec "sed" :
> sed  '/^center.*td$/d'  fichier.jsp
> 

un truc comme ça :
$ cat wrk
 ...texte à supprimer...
par :


$ sed 'sx.*xxg' wrk

par :



> Merci d'une aide.

J'espère que c'est ce que tu recherches.

> 
> André
> 


Jean-Marc 


pgpUdJNjvJsJZ.pgp
Description: PGP signature


Re: [HS] remplacer une portion de texte dans un fichier

2015-10-02 Par sujet Cyrille
Bsr,

Et 
$s=preg_replace("!(.*)!Ui","",$s);
ça ne passe pas ?

++C.



Re: [HS] remplacer une portion de texte dans un fichier

2015-10-02 Par sujet Philippe Gras

Le 2 oct. 2015 à 23:14, "Sylvain L. Sauvage"  a 
écrit :

> Le vendredi 2 octobre 2015, 22:23:03 andre_deb...@numericable.fr 
> a écrit :
>> […]
>>> sed  '/^center.*td$//g'  fichier.jsp?
>>> 
>>> A ajuster, c'est juste une piste.
>> 
>> J'ai tenté tout ça, mais en vain...
>> Réponse permanente :
>> sed: impossible de trouver l'étiquette pour sauter à
>> `d>//g'
> 
>  Lire la page de man de sed, elle est courte.
> 
>  Une instruction sed a trois formes possibles :
> — sans adresse, l’instruction s’applique à toutes les lignes :
>commande args options
> 
> — avec une adresse, l’instruction ne s’applique qu’aux lignes 
> qui correspondent à l’adresse :
>adresse commande args options
> 
> — avec deux adresses, l’instruction ne s’applique qu’aux lignes 
> entre les deux lignes qui correspondent à l’adresse :
>début,fin commande args options
> 
>  Une adresse est un numéro de ligne ou une expression 
> rationnelle.
> 
>  Le principal problème avec l’instruction proposée par Klaus 
> est qu’il n’y a pas de commande.

C'est un peu le même problème avec preg_replace :
http://php.net/manual/fr/function.preg-replace.php

> 
>  La commande souhaitée est la substitution, 's'. Elle prend 0, 
> 1 ou 2 adresses.
> 
>  Donc : sed -e 's:.*::'
> (':' sert ici de séparateur pour les arguments de 's', '/' 
> faisant partie de l’expression, ça évite d’avoir à le protéger.)
> 
>  Problèmes. Ça ne fera pas ce que tu veux si :
> 1. il y a des sauts de ligne entre  et  ;
> 2. il y a plusieurs  sur la même ligne (.* prend jusqu’au 
> dernier).
> 
>  Se procurer un bonne référence sur les expressions 
> rationnelles pour résoudre ces problèmes.
> 
> -- 
> Sylvain Sauvage
> 



Re: [HS] remplacer une portion de texte dans un fichier

2015-10-02 Par sujet Sylvain L. Sauvage
Le vendredi 2 octobre 2015, 22:23:03 andre_deb...@numericable.fr 
a écrit :
>[…]
> >  sed  '/^center.*td$//g'  fichier.jsp?
> > 
> > A ajuster, c'est juste une piste.
> 
> J'ai tenté tout ça, mais en vain...
> Réponse permanente :
> sed: impossible de trouver l'étiquette pour sauter à
> `d>//g'

  Lire la page de man de sed, elle est courte.

  Une instruction sed a trois formes possibles :
— sans adresse, l’instruction s’applique à toutes les lignes :
commande args options

— avec une adresse, l’instruction ne s’applique qu’aux lignes 
qui correspondent à l’adresse :
adresse commande args options

— avec deux adresses, l’instruction ne s’applique qu’aux lignes 
entre les deux lignes qui correspondent à l’adresse :
début,fin commande args options

  Une adresse est un numéro de ligne ou une expression 
rationnelle.

  Le principal problème avec l’instruction proposée par Klaus 
est qu’il n’y a pas de commande.

  La commande souhaitée est la substitution, 's'. Elle prend 0, 
1 ou 2 adresses.

  Donc : sed -e 's:.*::'
(':' sert ici de séparateur pour les arguments de 's', '/' 
faisant partie de l’expression, ça évite d’avoir à le protéger.)

  Problèmes. Ça ne fera pas ce que tu veux si :
1. il y a des sauts de ligne entre  et  ;
2. il y a plusieurs  sur la même ligne (.* prend jusqu’au 
dernier).

  Se procurer un bonne référence sur les expressions 
rationnelles pour résoudre ces problèmes.

-- 
 Sylvain Sauvage



Re: [HS] remplacer une portion de texte dans un fichier

2015-10-02 Par sujet andre_debian
On Friday 02 October 2015 22:09:56 Klaus Becker wrote:
> Le Freitag 02 Oktober 2015, 21:57:27 andre_deb...@numericable.fr a 
> écrit :
> > Je souhaite remplacer une portion de texte,
> > dans un fichier .jsp entre les expressions :
> >  ...texte à supprimer...
> > par :
> > 
> > J'ai vainement tout essayé avec "preg_replace" (php) dont :
> > $new_string = preg_replace((.*)",",$string);
> > avec "sed" :
> > sed  '/^center.*td$/d'  fichier.jsp

> l'option "d" de sed est pour supprimer une ligne. Ce serait pas plutôt 
> qc comme
>  sed  '/^center.*td$//g'  fichier.jsp?
> A ajuster, c'est juste une piste.

J'ai tenté tout ça, mais en vain...
Réponse permanente :
sed: impossible de trouver l'étiquette pour sauter à `d>//g'



Re: [HS] remplacer une portion de texte dans un fichier

2015-10-02 Par sujet Klaus Becker
Le Freitag 02 Oktober 2015, 21:57:27 andre_deb...@numericable.fr a 
écrit :
> Je souhaite remplacer une portion de texte,
> dans un fichier .jsp entre les expressions :
>  ...texte à supprimer...
> par :
> 
> 
> J'ai vainement tout essayé avec "preg_replace" (php) dont :
> $new_string = preg_replace((.*)",",$string);
> et
> avec "sed" :
> sed  '/^center.*td$/d'  fichier.jsp
> 
> Merci d'une aide.
> 
> André


'soir,

l'option "d" de sed est pour supprimer une ligne. Ce serait pas plutôt 
qc comme

 sed  '/^center.*td$//g'  fichier.jsp?

A ajuster, c'est juste une piste.

bye
Klaus



[HS] remplacer une portion de texte dans un fichier

2015-10-02 Par sujet andre_debian
Je souhaite remplacer une portion de texte,
dans un fichier .jsp entre les expressions :
 ...texte à supprimer...
par :


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

Merci d'une aide.

André