J'ai besoin de supprimer toutes les balises d'un html avec un script bash en utilisant la commande sed. J'ai essayé avec ça
sed -r 's/[\<][\/]?[a-zA-Z0-9\=\"\-\#\.\& ]+[\/]?[\>]//g' $1
et avec ça
sed -r 's/[\<][\/]?[.]*[\/]?[\\]?[\>]//g' $1
mais il me manque encore quelque chose, des suggestions ??
Vous pouvez soit utiliser l'un des nombreux convertisseurs HTML en texte , utiliser l'expression rationnelle de Perl si possible <.+?>
ou s'il doit être sed
utilisez <[^>]*>
sed -e 's/<[^>]*>//g' file.html
S'il n'y a pas de place pour les erreurs, utilisez plutôt un analyseur HTML. Par exemple. lorsqu'un élément est réparti sur deux lignes
<div
>Lorem ipsum</div>
cette expression régulière ne fonctionnera pas.
Cette expression régulière se compose de trois parties <
, [^>]*
, >
<
*
, qui ne sont pas les derniers >
[...]
est un classe de caractères , quand il commence par ^
recherchez les caractères et non dans la classe>
L'expression régulière plus simple <.*>
ne fonctionnera pas, car il recherche la correspondance la plus longue possible, c'est-à-dire la dernière fermeture >
dans une ligne d'entrée. Par exemple, lorsque vous avez plusieurs balises dans une ligne d'entrée
<name>Olaf</name> answers questions.
aura pour résultat
répond aux questions.
au lieu de
Olaf répond aux questions.
Voir aussi Répétition avec Star et Plus , en particulier la section Attention à la gourmandise! et suivantes, pour une explication détaillée.