Comment puis-je supprimer des liens d'un texte HTML brut? J'ai:Supprimer les liens d'un fichier texte
Foo bar <a href="http://www.foo.com">blah</a> bar foo
et que vous souhaitez obtenir:
bar Foo blah bar foo
après.
Comment puis-je supprimer des liens d'un texte HTML brut? J'ai:Supprimer les liens d'un fichier texte
Foo bar <a href="http://www.foo.com">blah</a> bar foo
et que vous souhaitez obtenir:
bar Foo blah bar foo
après.
Vous cherchez à analyser HTML avec des expressions rationnelles, et this won't work in all but the simplest cases, puisque le HTML n'est pas régulier. Une solution beaucoup plus fiable consiste à utiliser un analyseur HTML. Nombreux existent, pour beaucoup de langues différentes.
C'est un cas assez simple cependant. Vous n'êtes pas en train d'analyser le code HTML autant que de supprimer une chaîne spécifique ('') et des chaînes correspondant à un modèle spécifique ('') à partir d'un bloc de texte. Ce type de manipulation est précisément ce pour quoi regexp est conçu. Aucun des aspects de HTML qui le rendent non-standard ne joue (c'est-à-dire que les ancres ne peuvent pas être imbriquées les unes dans les autres, et nous ne nous soucions pas d'autres balises). –
Mais est-ce que vous vous souciez des tags dans les commentaires, etc.? –
essayer avec:
sed -e 's/<a[^>]*>.*<\/a>//g' test.txt
Cela produirait "Foo bar bar foo" au lieu de "Foo bar blah bar foo" pour l'exemple en question. Voir la solution de danlei pour la version correcte. – Bolo
sed -re 's|<a [^>]*>([^<]*)</a>|\1|g'
Mais la réponse de Brian a raison: Cela ne devrait être utilisé dans des cas très simples.
$ echo 'Foo bar <a href="http://www.foo.com">blah</a> bar foo' | awk 'BEGIN{RS="</a>"}/<a href/{gsub(/<a href=\042.*\042>/,"")}1'
Foo bar blah bar foo
travaillez-vous avec une langue particulière – spinon
est-il d'un fichier texte, avec une poignée de liens, ou est-il entièrement html générique? Si ce dernier et vous voulez juste quelque chose de rapide et bon marché, regardez dans w3m -dump ou lynx -dump. Si vous voulez un outil répétable ou configurable, la réponse de Brian est juste, trouver un analyseur HTML pour l'environnement que vous souhaitez utiliser. – sarnold
@spinon - il utilise "SED" [Stream Editor] - UNIX ... @Marko ... mettre REGEX au début de sa question ne résoudra pas son problème –