[HS] remplacer une portion de texte dans un fichier

Le
andre_debian
Je souhaite remplacer une portion de texte,
dans un fichier .jsp entre les expressions :
<center> texte à supprimer</td>
par :
<center></td>

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

Merci d'une aide.

André
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Klaus Becker
Le #26369766
Le Freitag 02 Oktober 2015, 21:57:27 a
écrit :
Je souhaite remplacer une portion de texte,
dans un fichier .jsp entre les expressions :
par :
<center></td>

J'ai vainement tout essayé avec "preg_replace" (php) dont :
$new_string = preg_replace( 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
andre_debian
Le #26369765
On Friday 02 October 2015 22:09:56 Klaus Becker wrote:
Le Freitag 02 Oktober 2015, 21:57:27 a
écrit :
> Je souhaite remplacer une portion de texte,
> dans un fichier .jsp entre les expressions :
> > par :
> <center></td>
> J'ai vainement tout essayé avec "preg_replace" (php) dont :
> $new_string = preg_replace( > 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>/</td>/g'
Sylvain L. Sauvage
Le #26369780
Le vendredi 2 octobre 2015, 22:23:03
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’appliq ue 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 p ar 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’av oir à 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
Philippe Gras
Le #26369781
Le 2 oct. 2015 à 23:14, "Sylvain L. Sauvage"
Le vendredi 2 octobre 2015, 22:23:03
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: (':' 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

Cyrille
Le #26369782
Bsr,

Et
$s=preg_replace("! ça ne passe pas ?

++C.
Jean-Marc
Le #26369783
--Signature=_Fri__2_Oct_2015_23_03_44_+0200_F7O yP_1gUeI./
Content-Type: text/plain; charset=UTF-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Fri, 2 Oct 2015 21:57:27 +0200
écrivait :

Je souhaite remplacer une portion de texte,
dans un fichier .jsp entre les expressions :
par :
<center></td>

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




un truc comme ça :
$ cat wrk
par :
<center></td>

$ sed 'sx <center></td>
par :
<center></td>


Merci d'une aide.



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


André





Jean-Marc
--Signature=_Fri__2_Oct_2015_23_03_44_+0200_F7O yP_1gUeI./
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCAAGBQJWDvE1AAoJEECwQOvthjrRw60P/jZNVwHHoyVou7Cf2qaPjVlL
mgKgbef9LzvrhqlNRmfuWmLLCxplcDd28jl06bAfzS4VNCsqfataIa4JlZtIp/qo
ucd6uPm6uvSYeoTfM/zhqtPz6krMu+dvPmfIWUtlbL5KdKncd4C5W/IQC9dtL4+B
1w26gqxKVhKRQ/r68DFBtJm/DWg20Mp/66detL59yh5R/Q2pz0PotSUFliKMQeK5
Oy2glLjIt9GY1BHshqbCQzwFZIEwwCUKPqoVHY5yV3I85cTUD3IC8iz2iDATcjH3
FArXNlfENjc5+TjkEmAAHzCHZPG1TxmuIJQQmvVt8mAIRO5nHqtX0faKPAuKL2jF
qWjlgrbv25Lovt4YEz2kG8xcStcTsZncWze0EtMyKDkKLOFPHRRK//GAuPkehAl1
en/Q3prxuxT7ZLflUGNCQu2LoTU6kmEAU3csECz8L5E9ojJ+Qb+yB/ilfxjEbiG0
BSprufM4WAQCR0hdw5LxCK9Nv4jMH8k1RfZhAhO+6fBsItzWZ0r7T3F7fG0XDPAv
AfZwAzlH2jBoIa7x+ZxXa3zfpSli2z4Vb+Ip1vVA2bDtSDPtJ1u1+/HAPEqha3uJ
YtnQpRhH8Ls3w9HuL+J6wPjK2cz56bQGmfaYA7kAwVaLnhGrinpG7plieOD7rMDJ
cweu0O9O6Biyv5RdLeci
=9/Bx
-----END PGP SIGNATURE-----

--Signature=_Fri__2_Oct_2015_23_03_44_+0200_F7O yP_1gUeI./--
François Meyer
Le #26369837
Bonjour,

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

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

regexp à replacer : <center>[^<]+</td>

chaîne de remplacement : <center></td>

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


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

François
andre_debian
Le #26369850
On Friday 02 October 2015 23:14:07 Sylvain L. Sauvage wrote:
Le vendredi 2 octobre 2015, 22:23:03
a écrit :
Donc : sed -e 's: (':' sert ici de séparateur pour les arguments de 's', '/'
faisant partie de l’expression, ça évite d’avoi r à le protéger.)




"sed -e 's: 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é
Klaus Becker
Le #26369888
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 :
par :
<center></td>



$ cat text.txt
<center>texte à supprimer</td>

$ sed 's# <center></td>

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

bonne soirée

Klaus
andre_debian
Le #26369900
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 :
> > par : <center></td>

$ cat text.txt
<center>texte à supprimer</td>

$ sed 's# <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é
Publicité
Poster une réponse
Anonyme