2009-11-04 3 views
0

J'essaie trouver toutes les occurrences d'une chaîne et de les remplacer, la chaîne d'origine ressemble à ceci:trouver, remplacer et échapper à la chaîne linux

<li><a href="#" onclick="alert('soon!');">Some Text Here</a></li> 

le remplacement ressemble à ceci:

<li><a href="<?php print $somevar;?>/some.php">Something new</a></li> 

Quelle serait une bonne façon de le faire dans le CLI

Merci

Répondre

0

Je pense que leLa commandeferait bien le travail, à condition que votre gestionnaire onclick et le "Some Text Here" n'incluent pas de balises HTML imbriquées que la regex pourrait confondre pour les balises fermantes de la chaîne de remplacement.

0

Rechercher et remplacer en HTML est un mal de tête garanti. À un moment donné, quelqu'un vous transmettra un code HTML malformé et même l'expression rationnelle la plus minutieuse fera défaut.

Je travaillerais certainement avec le HTML au plus haut niveau d'abstraction possible, de préférence un outil développé en interne qui utilise DOM ou SAX.

Pour une solution

  • Un outil de ligne de commande en utilisant XSL/XSLT
0

méthode standard de recherche et de remplacement dans la ligne de commande linux est sed, par exemple rapide:

sed -i yourfilename -e "s% textyouwantoreplace% newtext% g"

La seule chose est, sed utilise des expressions régulières, donc vous aurez besoin d'échapper à des choses qui pourraient b e un caractère générique, en mettant un \ avant, par exemple écrire \ $ au lieu de $.

moyens -i: modifier le fichier en place
moyens -e: la chose suivante dans la ligne de commande est une expression à évaluer, à savoir la chose entre guillemets après de substitut 'il
les moyens' s de
'g' signifie substitution 'globale'