[SHELL] insertion de texte dans un fichier

Résolu
cestrade -  
 cestrade -
Bonjour à tous,

je suis en train de développer un script dans lequel j'ai besoin d'insérer du texte entre 2 tags dans un fichier existant.
j'ai pensé à sed -i, mais ca ne permet que d'insérer du texte à une ligne connue.

exemple : j'ai un fichier comme suit :

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>TITRE</title>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<span class="textsm"></span>


et j'aimerai qu'il devienne :

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>TITRE_NOUVEAU</title>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="#FFFFFF" text="#000000">
TEXTE_A_RAJOUTER
<span class="textsm"></span>


je précise que je suis sous windows, et que j'utilise cygwin.

Merci si vous avez une idée !
A+
Christophe
A voir également:

6 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Au cas ou t'aurais sauté un thread ;-))
$ cat chris
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>TITRE</title>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<span class="textsm"></span>

$ sed -e '
s!TITRE!TITRE_NOUVEAU!
\!^<span class="textsm"!i\
TEXTE_A_RAJOUTER\
avec une nouvelle ligne\
et une dernière
' chris

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>TITRE_NOUVEAU</title>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="#FFFFFF" text="#000000">
TEXTE_A_RAJOUTER
avec une nouvelle ligne
et une dernière
<span class="textsm"></span>

$
;-))
1
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Bonjour

Une solution avec sed et bash (mais je pense que j'emploieri une autre méthode pour ce genre de chose, du perl peut-être, ou autre chose encore)

$ cat test.sh
#!/bin/bash

IN=test.html
sed -e '/<span class="textsm"><\/span>/,$d' -e's/<title>.*<\/title>/<title>NOUVEAU_TITRE<\/title>/' $IN
echo "TON
CONTENU
SUR
PLEIN
DE
LIGNES"
sed  -e '1,/<body bgcolor="#FFFFFF" text="#000000">/d' $IN
$ sh test.sh > resultat.html


Cordialement
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Et comme ça :
sed -e '
s!TITRE!TITRE_NOUVEAU!
\!^<span class="textsm"!i\
TEXTE_A_RAJOUTER\
avec une nouvelle ligne\
et une dernière
' fichier
;-))
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Bien plus classe!

Je cherchais a faire la même chose mais en ajout a la place de l'insertion, mais il a pas voulu... j'ai pas trop insisté non plus ;-)
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention  
 
Ben en ajout tu remplaces le "i" par un "a" et ça devrait le faire, non ?
A moins que je n'ai pas saisi toute ta pensée ;-\

;-))
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
Si si, c'est bien ça,

Mais va savoir, il en voulait pas :(

J'ai du laisser trainer un truc qu'il n'appreciait pas, mais j'ai pas insisté, je lui ai dit,
- tu fais ta mauvaise tête ? echo sait faire ça, tant pis pour toi! ;-)
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention  
 
Il est trop fort ce "echo" ;-)))
0
cestrade
 
merci asevere pour ta réponse !

j'ai essayé le 1° sed et ca fonctionne très bien.
en revanche, je n'arrive pas a faire marcher le 2° sed (pour écrire du texte apres "<body bgcolor=...")

que signifie le "1," dans ton expression ? et le "/d" à la fin ?

Merci
Christophe
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cestrade
 
Merci tout le monde, ca marche très bien !!!
0
ctiti60 Messages postés 1017 Date d'inscription   Statut Membre Dernière intervention   70
 
Salut,

Personnellement, je me serais plus orienté vers awk que sed...
-2