bonjour,
je veux faire un script capable de modifier un ensemble de fichiers html.
par exemple je veux supprimer tous les javascripts et reconvertir les url ne commençant pas par http://
j'ai pas de soucis pour la suppression des javascript, mais j'arrive pas à convertir les url:
je voudrai par exemple qu'une url de ce type href="foo/bar.html" soit transformé en href="ssfoo/foo/bar.html" le pb c'est que j'ai aussi des url commençant par http
#!/bin/sh
perl -0777pe 's/
perl -0777pe 's/a href=\"[^(http:\/\/)]+/a href=\"ssfoo\//gi'-i.bak *.new
après je me retrouve avec ça : href="ssfoo/oo/bar.html" il me cut le f dans ce cas
auriez vous une soluce ?
# Re: modification de fichier html en masse avec perl
Posté par Ben . Évalué à 1.
Line : chaque ligne de ton fichier...
Infile : ton fichier ouvert.
while ($Line=<InFile>)
{
if($Line=~ /(.*)<a\ href=\"([^http:\/\/]+\".*)/)
{
print $1."<a href=\"ssfoo/".$2;
}
}
Je ne suis pas sûr d'optimiser les accès mais bon...
# Les regex c'est riche
Posté par Sébastien Koechlin . Évalué à 1.
Tu peux donc directement mettre tes commandes de substitution dans un fichier commençant par:
#!/usr/bin/perl -i.bak -p -0777
Ensuite pour matcher une chaine non suivi d'une autre, c'est (?!motif)
Voici un mini-memento des assertions de largeur nulle (ils ne sont pas compté dans la chaine matché) bien pratique:
(?=motif) - Suivi de
(?!motif) - Non suivi de
(?<=motif) - Précédé de
(?<!motif) - Non précédé de
Donc pour tes besoins ça donne
s/<script>.*?<\/script>//gi;
s/(?<=\shref=['"])(?!http:\/\/)/ssfoo\//gi;
[^] # Re: Les regex c'est riche
Posté par MnPhs . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.