[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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



Le 2 oct. 2015 à 23:14, "Sylvain L. Sauvage" <Sylvain.L.Sauvage@free.fr> a écrit :

> Le vendredi 2 octobre 2015, 22:23:03 andre_debian@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>/</td>/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:<center>.*</td>:<center></td>:'
> (':' 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 <center> et </td> ;
> 2. il y a plusieurs </td> 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
> 


Reply to: