Sed et plus si affinités :p

Résolu
bkrqpzef Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   -  
bkrqpzef Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'aimerai faire quelques modifications de fichiers. J'ai environ 3000 pages html à modifier. J'aimerai supprimer tout ce qu'il y a à l'intérieur et garder uniquement ce qu'il y a entre <span class="classe"> et </span><br/>. Et je voudrai aussi concaténer tout ça dans un seul fichier de ce type :
<span class="classe"> texte 1 </span><br/>
<span class="classe"> texte 2 </span><br/>
<span class="classe"> texte 3 </span><br/>
Alors j'essaie de bidouiller tout ça avec la commande sed mais à dire vrai je me rend un peu fou. (Je découvre d'une certaine manière)
Si vous avez des idées, des techniques ou d'autres outils pour ce que j'aimerai faire, je suis preneur. :)
Merci à vous !!!!

27 réponses

bkrqpzef Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   5
 
Incroyable.
Ca fonctionne maintenant sur Cygwin... Alors j'avoue ne plus rien comprendre... (déjà que c'était pas terrible)
0
bkrqpzef Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   5
 
Code Mandriva (copié/collé cette fois)
[eriksen@localhost Bureau]$ cat page.html
<html>
<head></head>
<body>
<span>&#65533;"'(-&#65533;_&#65533;&#65533;)=^$&#65533;*iokl,;:</span>
<span class="classe">bob</span>
<div>&#65533;_&-"(&#65533;&#65533;&)"(&#65533;&#65533;&#65533;)</div>
<span class="classe">gilbert</span>
<span>$^m$^lsm)=&#65533;(&#65533;&#65533;</span>
<span class="classe">norbert</span>
<span>sqdsqdqdsqxc</span>
<div>xfpqozqighpin</div>
<p>$&#65533;qm*xqf&#65533;l</p>
</body>
[eriksen@localhost Bureau]$ sed -ns '\#<span class=.*</span><br/>#p' page.html
[eriksen@localhost Bureau]$

Le mystère reste entier ...
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Le mystère reste entier ...
Je ne te le fais pas dire ;-\
0
bkrqpzef Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   5
 
Un grand merci à toi en tout cas. Tu viens de montrer que tu restes incollable sur sed. :p
Je ne pensais pas que cette commande pouvait être aussi importante. (Il se trouve que je vais en avoir besoin souvent)
Je vais travailler dessus ça a l'air vraiment trop pratique de s'y connaitre !!!
Merci encore et désolé pour ces mésaventures assez étranges...
0
bkrqpzef Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   5
 
Donc pour la postérité :
Réponse :
sed -ns '\#<span class=.*</span><br/>#p' page.html

Mais euh pas tout le temps et pas partout. A suivre... :p
0

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

Posez votre question
bkrqpzef Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   5
 
Bon il y a eu des complications........
Donc voilà, j'ai bidouillé sed pas mal et je viens de trouver mon bonheur avec :
sed -i '/classe/!d' *.*
(supprime toutes les lignes de tous les fichiers sauf celles où il y a "classe")
cat *.* > bkrqpzef
(concatène tous les fichiers dans un seul)

Par contre là je suis à la recherche de la même commande, mais qui serait capable d'avoir 2 exceptions.
Du style "classe" OU "bateau".
J'ai pensé rapidement à
sed -i '/classe/!d *.* && sed -i '/bateau/!d *.*

Mais euuuh il écrase à la première donc il ne reste pas de "bateau" alors en fait il enlève un peu tout...

Par exemple pour :
chaise
bateau
bob
classe

Comment garder "bateau" ET "classe".
Une idée svp ?
Merci :)
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Re-

L'option -i n'est pas nécessaire ici dans la mesure où tu rediriges la sortie dans un fichier. En fait elle n'est utile que pour modifier le fichier source.
sed  '/classe\|bateau/!d' *.* > fichier
devrait faire l'affaire ;-))
0
bkrqpzef Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   5
 
Hooo.
C'est beau de voir quelqu'un qui maitrise. Plus grand, je serais comme toi !! :p
Merci encore.
0