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

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



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.

  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: