Modification de texte avec sed
Résolu
NegroTruc
-
NegroTruc -
NegroTruc -
Bonjour !
Je cherche à modifier un texte avec sed en donnant une condition avant.
En gros, j'ai un morceau dans ce style là :
...
blablabla
Repere
blablabla
blablabla
debutbloc
blablabli
blablabli
blablabli
finbloc
blablablo
blablablo
...
Et je veux ça :
...
blablabla
Repere
blablabla
blablabla
textederemplacement
blablablo
blablablo
...
Et seulement si je trouve "Repere" juste avant.
Je pensais utiliser la commande suivante, mais elle ne fonctionne pas (erreur : "sed: -e expression n°1, caractère 0: '{' non refermée ")
sed '/Repere/,/finbloc/{ c/debutbloc/,/finbloc/textederemplacement; }' fichier.xml > fichier.xml.NEW
J'avais d'autres comandes qui fonctionnait :
sed '/Repere/,/finbloc/ c\textederemplacement' fichier.xml > fichier.xml.NEW
==> Remplace tout de Repere jusque finbloc par textederemplacement
sed '/Repere/,/finbloc/ { /debutbloc/,/finbloc/ s/.*/textederemplacement/; }' fichier.xml > fichier.xml.NEW
==> Me remplace bien uniquement la partie debutbloc-fin bloc, mais je me retrouve avec textederemplacement copié sur le nombre de lignes du bloc, alors que je ne le veux qu'une seule fois.
Et je n'arrive pas à combiner les deux commandes...
Merci pour votre aide !
Je cherche à modifier un texte avec sed en donnant une condition avant.
En gros, j'ai un morceau dans ce style là :
...
blablabla
Repere
blablabla
blablabla
debutbloc
blablabli
blablabli
blablabli
finbloc
blablablo
blablablo
...
Et je veux ça :
...
blablabla
Repere
blablabla
blablabla
textederemplacement
blablablo
blablablo
...
Et seulement si je trouve "Repere" juste avant.
Je pensais utiliser la commande suivante, mais elle ne fonctionne pas (erreur : "sed: -e expression n°1, caractère 0: '{' non refermée ")
sed '/Repere/,/finbloc/{ c/debutbloc/,/finbloc/textederemplacement; }' fichier.xml > fichier.xml.NEW
J'avais d'autres comandes qui fonctionnait :
sed '/Repere/,/finbloc/ c\textederemplacement' fichier.xml > fichier.xml.NEW
==> Remplace tout de Repere jusque finbloc par textederemplacement
sed '/Repere/,/finbloc/ { /debutbloc/,/finbloc/ s/.*/textederemplacement/; }' fichier.xml > fichier.xml.NEW
==> Me remplace bien uniquement la partie debutbloc-fin bloc, mais je me retrouve avec textederemplacement copié sur le nombre de lignes du bloc, alors que je ne le veux qu'une seule fois.
Et je n'arrive pas à combiner les deux commandes...
Merci pour votre aide !
A voir également:
- Modification de texte avec sed
- Suivi de modification word - Guide
- Texte de chanson gratuit pdf - Télécharger - Vie quotidienne
- Logiciel gratuit modification pdf - Guide
- Transcription audio en texte word gratuit - Guide
- Excel cellule couleur si condition texte - Guide
3 réponses
Salut,
$ cat plop ... blablabla Repere blablabla blablabla debutbloc blablabli blablabli blablabli finbloc blablablo blablablo $ cat script.sed /Repere/,/finbloc/{ /debutbloc/{ :z N /finbloc/! bz s/.*/le texte de remplacement/ } } $ sed -f script.sed plop ... blablabla Repere blablabla blablabla le texte de remplacement blablablo blablablo $;-))