95 votes

Script Bash pour convertir des entités HTML en caractères

Je cherche un moyen de transformer ceci:

 hello < world

pour ça:

 hello < world

Je pourrais utiliser sed, mais comment y parvenir sans utiliser de regex cryptique ?

110voto

ceving Points 3990

Essayez de recoder ( page archivée ; miroir GitHub ; page Debian ) :

 $ echo '&lt;' |recode html..ascii
<

Installation sur Linux et systèmes Unix-y similaires :

 $ sudo apt-get install recode

Installer sur Mac OS en utilisant :

 $ brew install recode

72voto

user1788934 Points 141

Avec perl :

 cat foo.html | perl -MHTML::Entities -pe 'decode_entities($_);'

Avec php depuis la ligne de commande :

 cat foo.html | php -r 'while(($line=fgets(STDIN)) !== FALSE) echo html_entity_decode($line, ENT_QUOTES|ENT_HTML401);'

24voto

Whitecat Points 741

Une alternative consiste à passer par un navigateur Web, par exemple :

echo '&#33;' | w3m -dump -T text/html

Cela a très bien fonctionné pour moi dans cygwin, où le téléchargement et l'installation de distributions sont difficiles.

Cette réponse a été trouvée ici

20voto

user243 Points 61

Utilisation de xmlstarlet :

 echo 'hello &lt; world' | xmlstarlet unesc

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X