Re: [HS] remplacer une portion de texte dans un fichier
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
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
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
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
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
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
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
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
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
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
Bsr, Et $s=preg_replace("!(.*)!Ui","",$s); ça ne passe pas ? ++C.
Re: [HS] remplacer une portion de texte dans un fichier
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
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
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
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
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é