Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2547 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  sed - protection chaine complexe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

sed - protection chaine complexe

n°1298914
neyslim_be​nchmark
Posté le 14-12-2011 à 17:03:46  profilanswer
 

Bonjour à tous,
 
On m'a chargé de supprimer un compte twitter apparaissant sur toutes les pages du site web de ma boite. Le problème: le dev du site web au lieu d'utiliser footer.php, est passé sur TOUTES LES PAGES (140 environ) et a inscrit le code.
Mon problème est que j'arrive pas à protéger correctement ma chaine pour la virer avec sed.
 
Voici la chaine:

Code :
  1. <a href="https://twitter.com/camillerossi" class="twitter-follow-button" data-show-count="false">Follow @camillerossi</a><script src="//platform.twitter.com/widgets.js" type="text/javascript"></script>


J'arrive à la protéger pour que grep la trouve, mais avec sed ça ne marche pas.
 
Voici la commande utilisée:
 

Code :
  1. find . -type f -exec sed -e 's#<a href=\"https:\/\/twitter.com\/camillerossi\"# #g{}' \;


J'ai remplacé les caractères de séparation par des # afin d'éviter d'interpréter les / dans la chaine. Je sais plus ce que j'ai essayé ou pas, et je vous avoue que la j'en ai marre.  
 
Si une bonne âme peut m'aider ..


Message édité par neyslim_benchmark le 14-12-2011 à 17:26:58
mood
Publicité
Posté le 14-12-2011 à 17:03:46  profilanswer
 

n°1298915
o'gure
Modérateur
Multi grognon de B_L
Posté le 14-12-2011 à 17:08:47  profilanswer
 

Si c'est sur une seule ligne tu ne peux pas changer ta stratégie et dire à sed de deleter la ligne qui matche ton pattern (style toute ligne qui matche camillerossi -> delete ?)

n°1298916
o'gure
Modérateur
Multi grognon de B_L
Posté le 14-12-2011 à 17:10:46  profilanswer
 

sed '/pattern/d '  


devrait le faire

n°1298917
neyslim_be​nchmark
Posté le 14-12-2011 à 17:21:38  profilanswer
 

o'gure a écrit :

Si c'est sur une seule ligne tu ne peux pas changer ta stratégie et dire à sed de deleter la ligne qui matche ton pattern (style toute ligne qui matche camillerossi -> delete ?)


Non c'est en plein milieu de la ligne, bien évidemment :)
 

o'gure a écrit :

sed '/pattern/d '  


devrait le faire


 
J'ai testé avec cette commande:

Code :
  1. find . -type f -exec sed '#<a href="https://twitter.com/camillerossi" class="twitter-follow-button" data-show-count="false">Follow @camillerossi</a><script src="//platform.twitter.com/widgets.js" type="text/javascript"></script>#d' \;


 
Il ne me met pas d'erreur, mais par contre il fait rien. Je pense que c'est à cause des / que je n ai pas protégé, ou alors les ". Je tente et je te dis.
Merci de ton aide en tous cas.

n°1298918
Modération
Posté le 14-12-2011 à 17:25:55  answer
 

Peux-tu mettre un titre un peu... plus orienté sur ton problème ?

n°1298919
neyslim_be​nchmark
Posté le 14-12-2011 à 17:27:18  profilanswer
 

Modération a écrit :

Peux-tu mettre un titre un peu... plus orienté sur ton problème ?


 
C'est bon, désolé ...

n°1298921
neyslim_be​nchmark
Posté le 14-12-2011 à 17:36:25  profilanswer
 

o'gure a écrit :

sed '/pattern/d '  


devrait le faire


 
Bon je n'ai pas réussi, j'ai essayé avec ça:

Code :
  1. find . -type f -exec sed '/<a href=\"https:\/\/twitter.com\/camillerossi\" class=\"twitter-follow-button\" data-show-count=\"false\">Follow @camillerossi<\/a><script src=\"\/\/platform.twitter.com\/widgets.js\" type=\"text\/javascript\"><\/script>/d ' \;


 
Et aussi avec # comme séparateur, mais rien.
J'essaye des trucs ...

n°1298923
neyslim_be​nchmark
Posté le 14-12-2011 à 17:56:03  profilanswer
 

Bah je continuerai demain, j'en ai marre.

n°1298924
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 14-12-2011 à 18:07:30  profilanswer
 

sed bosse ligne à ligne, ton html peut être sur plusieurs lignes (et on peut foutre les attributs un peu où on veut) donc sed est peut-être pas le meilleur outil pour ça (un peu de xslt si c'est du xhtml serait bien mieux).

 

Sinon ça marche très bien, pas besoin de tout protéger partout hein :o

 

Sans sed


$echo '<a href="https://twitter.com/camillerossi" class="twitter-follow-button" data-show-count="false">Follow @camillerossi</a><script src="//platform.twitter.com/widgets.js" type="text/javascript" </script>'

 

<a href="https://twitter.com/camillerossi" class="twitter-follow-button" data-show-count="false">Follow @camillerossi</a><script src="//platform.twitter.com/widgets.js" type="text/javascript"></script>

 

Avec sed


$echo '<a href="https://twitter.com/camillerossi" class="twitter-follow-button" data-show-count="false">Follow @camillerossi</a><script src="//platform.twitter.com/widgets.js" type="text/javascript"></script>' | sed -e 's#<a href="https://twitter\.com/camillerossi"#XXX#'

 

XXX class="twitter-follow-button" data-show-count="false">Follow @camillerossi</a><script src="//platform.twitter.com/widgets.js" type="text/javascript"></script>

Message cité 1 fois
Message édité par Xavier_OM le 14-12-2011 à 18:12:10

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°1298928
o'gure
Modérateur
Multi grognon de B_L
Posté le 14-12-2011 à 18:17:29  profilanswer
 

neyslim_benchmark a écrit :


 
Bon je n'ai pas réussi, j'ai essayé avec ça:

Code :
  1. find . -type f -exec sed '/<a href=\"https:\/\/twitter.com\/camillerossi\" class=\"twitter-follow-button\" data-show-count=\"false\">Follow @camillerossi<\/a><script src=\"\/\/platform.twitter.com\/widgets.js\" type=\"text\/javascript\"><\/script>/d ' \;




n'utilise pas d comme action si tu ne veux pas supprimer toute la ligne.

mood
Publicité
Posté le 14-12-2011 à 18:17:29  profilanswer
 

n°1298973
neyslim_be​nchmark
Posté le 15-12-2011 à 10:45:15  profilanswer
 

Xavier_OM a écrit :

sed bosse ligne à ligne, ton html peut être sur plusieurs lignes (et on peut foutre les attributs un peu où on veut) donc sed est peut-être pas le meilleur outil pour ça (un peu de xslt si c'est du xhtml serait bien mieux).
 
Sinon ça marche très bien, pas besoin de tout protéger partout hein :o
 
Avec sed


$echo '<a href="https://twitter.com/camillerossi" class="twitter-follow-button" data-show-count="false">Follow @camillerossi</a><script src="//platform.twitter.com/widgets.js" type="text/javascript"></script>' | sed -e 's#<a href="https://twitter\.com/camillerossi"#XXX#'
 
XXX class="twitter-follow-button" data-show-count="false">Follow @camillerossi</a><script src="//platform.twitter.com/widgets.js" type="text/javascript"></script>



 
Alors ce code est bien sur une seule ligne, mais au milieu. Par contre chose intéressante, je me suis rendu compte que effectivement "echo x | sed ..." ca fonctionne, mais pas avec "find -exec", et c'est peut-être la le problème. Je vais essayer une autre méthode que find.

n°1298979
neyslim_be​nchmark
Posté le 15-12-2011 à 11:04:52  profilanswer
 

Bon alors attendez avant de m'aider parce que je viens à peine de comprendre que sed travaille sur l'affichage mais n'écrit pas sur le fichier :D hum ...
 
Je vous dis quand j'ai réussi.

n°1298981
memaster
ki a volé mon 62?
Posté le 15-12-2011 à 11:06:17  profilanswer
 

neyslim_benchmark a écrit :

Bon alors attendez avant de m'aider parce que je viens à peine de comprendre que sed travaille sur l'affichage mais n'écrit pas sur le fichier :D hum ...
 
Je vous dis quand j'ai réussi.


et depuis le temps, tu aurais peut être déjà fini la méthode manuelle sur les 140pages :hello:


---------------
ma conduite intérieure .:R | memaster pilote officiel de la HFR Badoit-Auchan F1 Team | zéro tracas, zéro blabla MMa.ster
n°1298983
neyslim_be​nchmark
Posté le 15-12-2011 à 11:08:01  profilanswer
 

Ben plus ou moins, vu que je fais du support sur des équipements télécom en même temps, mais bon au moins je commence à piger la méthode ^^

n°1298986
o'gure
Modérateur
Multi grognon de B_L
Posté le 15-12-2011 à 11:10:21  profilanswer
 

neyslim_benchmark a écrit :

Bon alors attendez avant de m'aider parce que je viens à peine de comprendre que sed travaille sur l'affichage mais n'écrit pas sur le fichier :D hum ...
 
Je vous dis quand j'ai réussi.


man sed [:spamafote]
option -i pour modifier le fichier, sinon c'est clairement dit que l'output par défaut est le "standard output". Ce qui te permet de faire garder l'original et de faire les modifications vers un répertoire résultat avec les redirections classiques du shell.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  sed - protection chaine complexe

 

Sujets relatifs
Besoin d'aide svp :sAide en bash
Carte TNT sous Linux ? Besoin d'aide.systeme exploitation aide ?
Besoin d'aide pure-ftpd[RESOLU]ubuntu 11.04 soucis de MAJ
Besoin d'aide sur iptablesAide pour script bash
Aide pour une Configuration Samba 
Plus de sujets relatifs à : sed - protection chaine complexe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR