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 -
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 !!!!
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 !!!!
A voir également:
- Sed et plus si affinités :p
- Remplacez le mot sed par le mot mais dans tout le texte. combien de caractères contient le document suite à cette modification (en incluant les espaces) ? - Guide
- Sed et ses caprices (ou les miens) ✓ - Forum Linux / Unix
- Sed crlf - Astuces et Solutions
- Sed - Remplacement texte par retour à la ligne ? ✓ - Forum Linux / Unix
- Sed supprimer ligne vide - Forum Linux / Unix
27 réponses
Haha, impossible de faire un § sur Cygwin.
Sinon sur sed windows erreur :
Avec :
Erreur :
Alors là je dois admettre que je suis un peu paumé. Je ne vois pas ce qu'il ne trouve pas ...
Avec :
L'erreur est la même....
En créant le fichier txt avant, même erreur. Je ne sais pas ....
Sinon sur sed windows erreur :
< était inattendu
Avec :
sed -ns 's§.*\(<span class="classe".*</span>\).*§\1§w sortie.txt' *.html(sans le <br/> dans mon cas ce n'est pas grave :p)
Erreur :
Le fichier spécifié est introuvable.
Alors là je dois admettre que je suis un peu paumé. Je ne vois pas ce qu'il ne trouve pas ...
Avec :
sed -ns 's§.*\(<span class="classe".*</span>\).*§\1§w sortie.txt' page.html(page qui existe)
L'erreur est la même....
En créant le fichier txt avant, même erreur. Je ne sais pas ....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ben si sur :
Si le sed donne :
Ca serait le rêve. :D
<html> <head></head> <body> <span>é"'(-è_çà)=^$ù*iokl,;:</span><br/> <span class="classe">bob</span><br/> <div>ç_&-"(àç&)"(çàè)</div> <span class="classe">gilbert</span><br/> <span>$^m$^lsm)=à(éè</span> <span class="classe">norbert</span><br/> <span>sqdsqdqdsqxc</span> <div>xfpqozqighpin</div> <p>$ùqm*xqfùl</p> </body> </html>
Si le sed donne :
<span class="classe">bob</span><br/> <span class="classe">gilbert</span><br/> <span class="classe">norbert</span><br/>
Ca serait le rêve. :D
Re,
Je n'ai pas testé puisque je n'ai pas un environnement linux pour l'instant
Je n'ai pas testé puisque je n'ai pas un environnement linux pour l'instant
perl -pi.orig -e 'next unless s/.*(<span class="classe">.+?</span>).*/$1/g' fichier.html
[tmpfs]$ cat bkrqpzef <html> <head></head> <body> <span>é"'(-è_çà)=^$ù*iokl,;:</span><br/> <span class="classe">bob</span><br/> <div>ç_&-"(àç&)"(çàè)</div> <span class="classe">gilbert</span><br/> <span>$^m$^lsm)=à(éè</span> <span class="classe">norbert</span><br/> <span>sqdsqdqdsqxc</span> <div>xfpqozqighpin</div> <p>$ùqm*xqfùl</p> </body> </html> [tmpfs]$ sed -n 's§.*\(<span class=.*</span><br/>\).*§\1§p' bkrqpzef <span class="classe">bob</span><br/> <span class="classe">gilbert</span><br/> <span class="classe">norbert</span><br/> [tmpfs]$Ça c'était au cas ou il y aurait d'autres caractères ou balises avant/après, sinon en plus simple :
sed -n '\#<span class=.*</span><br/>#p' bkrqpzef;-))
Tu peux faire un essai avec ça et afficher le résultat s'il te plait :
Merci.
[tmpfs]$ cat bkrqpzef <html> <head></head> <body> <span>é"'(-è_çà)=^$ù*iokl,;:</span><br/> <span class="classe">bob</span><br/> <div>ç_&-"(àç&)"(çàè)</div> <span class="classe">gilbert</span><br/> <span>$^m$^lsm)=à(éè</span> <span class="classe">norbert</span><br/> <span>sqdsqdqdsqxc</span> <div>xfpqozqighpin</div> <p>$ùqm*xqfùl</p> </body> </html> [tmpfs]$ sed -ns '\#<span class=.*</span><br/>#p' bkrqpzef <span class="classe">bob</span><br/> <span class="classe">gilbert</span><br/> <span class="classe">norbert</span><br/> [tmpfs]$Et dans la foulée afficher la sortie de "cat -A bkrqpzef".
Merci.
je ne comprend pas bien ce qu'il faut obtenir après un
C'est censé changer le fichier bkrqpzef ?
sed -n 's§.*\(<span class=.*</span><br/>\).*§\1§p' bkrqpzef
C'est censé changer le fichier bkrqpzef ?
[prompt] cat bkrqpzef <html> <head></head> <body> <span>é"'(-è_çà)=^$ù*iokl,;:</span><br/> <span class="classe">bob</span><br/> <div>ç_&-"(àç&)"(çàè)</div> <span class="classe">gilbert</span><br/> <span>$^m$^lsm)=à(éè</span> <span class="classe">norbert</span><br/> <span>sqdsqdqdsqxc</span> <div>xfpqozqighpin</div> <p>$ùqm*xqfùl</p> </body> </html> [prompt] sed -ns '\#<span class=.*</span><br/>#p' bkrqpzef [prompt]cat -A bkrqpzef <html> <head></head> <body> <span>é"'(-è_çà)=^$ù*iokl,;:</span><br/> <span class="classe">bob</span><br/> <div>ç_&-"(àç&)"(çàè)</div> <span class="classe">gilbert</span><br/> <span>$^m$^lsm)=à(éè</span> <span class="classe">norbert</span><br/> <span>sqdsqdqdsqxc</span> <div>xfpqozqighpin</div> <p>$ùqm*xqfùl</p> </body> </html>
Euh... il sort d'où ton fichier ? Et sous quel environnement tu es ?
Normalement un "cat -A" devrait te donner ça :
Le "$" en fin de ligne, synonyme de fin de ligne sous GNU/Linux.
Essaye avec sed alors (c'est un ELLE minuscule et non pas un UN !!!) :
Normalement un "cat -A" devrait te donner ça :
[tmpfs]$ cat -A bkrqpzef <html>$ <head></head>$ <body>$ <span>M-i"'(-M-h_M-gM-`)=^$M-y*iokl,;:</span><br/>$ <span class="classe">bob</span><br/>$ <div>M-g_&-"(M-`M-g&)"(M-gM-`M-h)</div>$ <span class="classe">gilbert</span><br/>$ <span>$^m$^lsm)=M-`(M-iM-h</span>$ <span class="classe">norbert</span><br/>$ <span>sqdsqdqdsqxc</span>$ <div>xfpqozqighpin</div>$ <p>$M-yqm*xqfM-yl</p>$ </body>$ </html>$
Le "$" en fin de ligne, synonyme de fin de ligne sous GNU/Linux.
Essaye avec sed alors (c'est un ELLE minuscule et non pas un UN !!!) :
[tmpfs]$ sed -n l bkrqpzef <html>$ <head></head>$ <body>$ <span>\351"'(-\350_\347\340)=^$\371*iokl,;:</span><br/>$ <span class="classe">bob</span><br/>$ <div>\347_&-"(\340\347&)"(\347\340\350)</div>$ <span class="classe">gilbert</span><br/>$ <span>$^m$^lsm)=\340(\351\350</span>$ <span class="classe">norbert</span><br/>$ <span>sqdsqdqdsqxc</span>$ <div>xfpqozqighpin</div>$ <p>$\371qm*xqf\371l</p>$ </body>$ </html>$ [tmpfs]$
Désolé pour le "copier-coller" qui n'en était pas un ^^
Il y a effectivement un ^M$ à la fin de chaque ligne du cat. (Cygwin)
Et
Il y a effectivement un ^M$ à la fin de chaque ligne du cat. (Cygwin)
Et
sed -n l bkrqpzefaffiche un $.
sed -n l bkrqpzef affiche un $.
\r$ plutôt non ?
Bon j'ai changé mes "$" en "^M" et ça marche quand même ;-\
\r$ plutôt non ?
Bon j'ai changé mes "$" en "^M" et ça marche quand même ;-\
[tmpfs]$ cat -A bkrqpzef <html>^M$ <head></head>^M$ <body>^M$ <span>M-i"'(-M-h_M-gM-`)=^$M-y*iokl,;:</span><br/>^M$ <span class="classe">bob</span><br/>^M$ <div>M-g_&-"(M-`M-g&)"(M-gM-`M-h)</div>^M$ <span class="classe">gilbert</span><br/>^M$ <span>$^m$^lsm)=M-`(M-iM-h</span>^M$ <span class="classe">norbert</span><br/>^M$ <span>sqdsqdqdsqxc</span>^M$ <div>xfpqozqighpin</div>^M$ <p>$M-yqm*xqfM-yl</p>^M$ </body>^M$ </html>^M$ [tmpfs]$ sed -n '\#<span class=.*</span><br/>#p' bkrqpzef <span class="classe">bob</span><br/> <span class="classe">gilbert</span><br/> <span class="classe">norbert</span><br/> [tmpfs]$Je comprends plus rien ;-(((