Html et balise script sur plusieurs lignes [Script shell, SED] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 20-10-2004 à 16:06:40
À l'arrache
cat plop.txt | sed -e 's/<script[^>]*>//g' | sed -e 's/<\/script>//g' |
Marsh Posté le 20-10-2004 à 16:12:10
ca marche bien sur les <script /script> qui sont sur la meme ligne mais pas sur qqch comme ca:
<script language="Javascript">
var ADV_sitepage="www.toto.com/jdj/exemple.htm";
var ADV_listpos="Top1,x01,Top,Bottom,Left,Left2,Right,Right1";
var ADV_qcod="_US2856611049_";
var ADV_qsec="_technologies_de_l_information_";
var ADV_qkey="_informatique_";
var ADV_qcom="_eds_";
var ADV_qgeo="_monde_";
</script>
j'ai essayer ca :
cat tmp.tmp | sed -e 's/<script[^>]*>[. \t\n]*//g' | sed -e 's/<\/script>//g' > result
mais ca marche pas plus...
Marsh Posté le 20-10-2004 à 16:31:46
La http://pegasus.rutgers.edu/~elflord/unix/sed.html
il parle de matcher des patterns sur plusieurs lignes, mais je capte que dalle...
Marsh Posté le 20-10-2004 à 16:33:34
ha ok, tu veux enlever ce qu'il y a entre les balises AUSSI ! J'avais mal compris dsl ...
Marsh Posté le 20-10-2004 à 17:06:24
cat tmp.tmp | sed -e '/<script/,/<\/script>/ s/.*//'
avec ca, j'arrive presque a ce que je veux sauf que ca me vire bcp trop de truc...
j'essaie de faire faire a sed : entre <script et </script> vire tout... le pb c'est que j'ai pas l'impression qu'il trouve la fin </script>...
Marsh Posté le 20-10-2004 à 17:18:06
/\(<script\).*\(script\)/d
ca marche pas un truc ds le genre ?
Marsh Posté le 20-10-2004 à 17:23:46
nan, ca vire le premier <script, mais pas le dernier, ni le contenu de la balise...
c bete, je comprends pas pkoi il s'arrete pas sur la derniere balise avec ca :
cat tmp.tmp | sed -e '/<script/,/<\/script>/ s/.*//'
Marsh Posté le 20-10-2004 à 20:12:46
post inutile.
Marsh Posté le 21-10-2004 à 09:41:33
Génial.... je suis vachement avancé dans mon pb
Marsh Posté le 21-10-2004 à 10:42:53
paquerette a écrit : nan, ca vire le premier <script, mais pas le dernier, ni le contenu de la balise... |
Je viens de comprendre... sed match au plus large
par exemple :
<script>
</script>
text
<script>
</script>
text
<script>
</script>
il va prendre la zone du premier script au dernier /script et pas 3 fois les <script> </script>
Damned, ca m'arrange pas ca...
Marsh Posté le 22-10-2004 à 13:31:01
paquerette a écrit : Personne pour m'aider |
Peux tu me donner le résultat que tu voudrais avoir ???
Que je sache exactement ce que tu veux.
Marsh Posté le 25-10-2004 à 12:18:46
De ca :
|
je voudrais passer a ca :
|
Soit en gros, virer tout ce qui est contenu entre chaque <script...></script>
Marsh Posté le 27-10-2004 à 11:29:03
personne ne m'aime...
Marsh Posté le 07-12-2004 à 19:58:12
paquerette a écrit : personne ne m'aime... |
Ce sujet est toujours d'actualité ?
...Je reflechis la dessus ce soir, sed est ma commande favorite
Demain tu as la reponse !
Marsh Posté le 08-12-2004 à 03:02:26
En 2 heures rien qu'avec le man de sed et sans rien y connaitre :
sed ':x;s/<script.*<\/script>//g;N;bx' |
C'est trop fort sed
Bon c'est surement pas parfait, mais ça devrait te permettre de démarrer.
Marsh Posté le 08-12-2004 à 12:56:44
Aller les enfants fini de faire mumuse avec sed, paquerette j'ai la réponse à ton probleme :
Alors suit moi bien, tout se fait en 3 étapes :
1) cree un fichier ~/script1er.sed et copie dedans le code suivant :
|
2) cree un fichier ~/script2eme.sed et copie dedans le code suivant :
|
3)il ne te reste plus qu'a executer la commande suivante (remplace ~/src par le chemin a ton fichier html):
|
A l'issue de l'etape 3 tu obtiendras un fichier ~/resultat qui contient ce que tu voulais .
Rq : - ce code ne marche pas pour des scripts dans des scripts (dans un 1er tps...demander si necessaire )
et voila, ce fut un plaisir, sed c'est bien, mangez en
Marsh Posté le 08-12-2004 à 19:08:09
Ils font quoi de plus que ma commande d'une ligne tes scripts ?
Marsh Posté le 09-12-2004 à 11:25:30
matafan a écrit : Ils font quoi de plus que ma commande d'une ligne tes scripts ? |
tu l'a testé ton script sur son exemple ?
Marsh Posté le 09-12-2004 à 12:30:48
Ça manque de "i" tout ces "s"
Maitenant étape 2 : gérer les commentaires.
Ex:
<script>
<!--
</script>
hé oui, la ca va tout planter !
-->
</script>
Marsh Posté le 09-12-2004 à 12:33:09
ReplyMarsh Posté le 09-12-2004 à 16:01:16
ArSuniK a écrit : Chez moi il marche son script |
Perdu, dommage ! (j'ai essaié chez moi aussi )
tiens essaie le avec ca :
|
Si le script marche, il te renvoie uniquement l'alphabet [a-l] (de a à l, bornes comprises et chaque lettre apparaissant une seule fois) sur l'ecran...si tu as d'autres lettres qui apparaissent ou bien que tu n'as pas toutes les lettres de a à l, il merde
Bon test !
EDIT : et dans ton script, tu fais l'affichage où de ton "pattern space" ? pour avoir le résultat
Marsh Posté le 09-12-2004 à 16:19:16
ArSuniK a écrit : Ça manque de "i" tout ces "s" |
paquerette n'a pas demande de gerer les commentaires
Marsh Posté le 09-12-2004 à 21:02:48
Ya pas moyen de faire de faire des match "au plus court" (me souvient plus de la dénomination exacte) en sed ?
Marsh Posté le 10-12-2004 à 04:20:08
Apparement non, c'est ce qui m'a perdu
Bref ça prouve bien la superiorité de Perl
perl -pe 'BEGIN{$/=""}s/<script[ >].*?<\/script>?//gms' |
Marsh Posté le 10-12-2004 à 10:50:41
ArSuniK a écrit : Ya pas moyen de faire de faire des match "au plus court" (me souvient plus de la dénomination exacte) en sed ? |
Tu remarqueras que les match "au plus court" se font dans ma "boucle" en fait dans mon 'script1er.sed' : en fait je supprime a chaque le dernier script dans la ligne => plus de problème du match !
Marsh Posté le 10-12-2004 à 11:37:52
matafan a écrit :
|
Il manque juste le ".*?" en sed.
Marsh Posté le 20-10-2004 à 14:55:49
Bonjour,
j'essaie de virer d'un fichier html toutes les balises scripts.
genre cette bouillie la :
j'en veux plus...
donc j'essaie ca :
sed -e 's@\<script[ \t\n.]*\</script\>@ @g' toto.html > plusDeScript.tmp
mais ca marche pô... les blocs de scripts sont intact...
qqn pourrait m'aider??
Paquerette
Message édité par paquerette le 20-10-2004 à 14:59:57