2013-01-17 2 views
0

Je voudrais enlever toutes les étiquettes de HTML mais laisser
E.G. <a href="http://www.domain.com/">Link Title</a>SED Enlever toutes les balises de HTML Sauf les liens

Jusqu'à présent cela fonctionne pour moi sauf qu'il supprime la partie </a>.

sed -e 's/<[^">]*>//g' 

Je voudrais savoir s'il existe une meilleure façon de procéder.

+1

liens ne sont pas les seuls tags avec des attributs. –

+0

Oui je sais, mais c'est ce dont j'avais besoin ;-) – Tux

Répondre

4

Fondamentalement ce que vous avez écrit supprime tous les blocs de <Stuff>Stuff n'a pas de guillemets. Si, par exemple, il y avait un peu de html parfaitement valable comme:

<a href='http://www.domain.com/'>Link Title</a> 

ou même un peu bizarre comme html:

<a href=http://www.domain.com/>Link Title</a> 

ça ne marcherait pas pour vous.

Les expressions régulières sont considérées comme une manière notoirement mauvaise de traiter le code HTML, sauf dans les cas où vous connaissez exactement la gamme complète des variations que vous pouvez éventuellement traiter.

Donc, lisez d'abord this viewpoint.

Je pourrais suggérer quelque chose comme:

sed -e 's/<[^a>/!][^ >][^>]*>//g;s/<\/[^a>][^>]*>//g' 
+0

Perfect SED Rule merci dlamblin. Cela supprime efficacement toutes les balises html et laisse les liens seuls. – Tux

+0

@Tux De rien. Si vous exécutez ceci sur n'importe quel HTML qui contient '' '' '

' '' ou '' et vous le cassez ... vous l'achetez. :) – dlamblin

+0

LOL Que le point, je ne voulais pas de balises avec ou sans attributs, mais seulement des balises simples. C'est juste ce que je voulais. Merci =) – Tux

Questions connexes