2010-11-23 6 views
3

je veux changer tous les liens dans un fichier html avec sed comme celui-ciURL remplacer par sed

s/ <a[^>]* href="[^"]*\// <a href="\http:\/\/www.someurl.com\//g 

mais il ne fonctionne pas.

Mes liens:

<a href="http://www.mylink.com/help/rss.php" target="_top" title="RSS">RSS</a></div> 

mon changement de script ne mylink.com/help/rss.php~~V~~number=plural~~singular~~3rd à someurl.com/help/rss.php

Je dois changer seulement someurl.com

+0

L'expression régulière fonctionne comme je l'attendrais. À quoi voulez-vous que le résultat ressemble? –

Répondre

0

Vous l'avez terminé avec \/, ce qui signifie qu'il ira à la dernière barre oblique. Retirez le \/ arrière et il fonctionnera:

$ echo ' <a href="http://www.mylink.com/help/rss.php" target="_top" title="RSS">RSS</a></div>' \ 
> | sed 's/ <a[^>]* href="[^"]*/ <a href="\http:\/\/www.someurl.com\//g' 
<a href="http://www.someurl.com/" target="_top" title="RSS">RSS</a></div> 

Ou, sous la direction en ligne avec suggestion sage de Dennis sur le caractère de séparation (toujours avec la suppression du / à la fin du modèle de recherche, plus évidente maintenant):

$ echo '<a href="http://www.mylink.com/help/rss.php" target="_top" title="RSS">RSS</a></div>' \ 
> | sed 's|<a[^>]* href="[^"]*|<a href="http://www.someurl.com/|g' 
<a href="http://www.someurl.com/" target="_top" title="RSS">RSS</a></div> 
6

Sortez l'espace après la première barre oblique, changer toutes les barres obliques sed à un autre caractère tel que | pour une meilleure lisibilité et enlever tous les sortir de l'URL des barres obliques.

sed 's|<a[^>]* href="[^"]*/|<a href="http://www.someurl.com/|g' 
Questions connexes