2010-07-23 9 views
9

Y a-t-il un moyen de faire quelque chose comme ce qui suit en utilisant la chaîne d'outils linux standard?Trouver/remplacer des htmlentities en utilisant la chaîne d'outils linux standard?

Disons que la source à example.com/index.php est:

Hello, & world! " 

Comment puis-je faire quelque chose comme ça ...

curl -s http://example.com/index.php | htmlentities 

... qui imprimerait les éléments suivants :

Hello, & world! " 

En utilisant uniquement la chaîne d'outils linux standard?

Répondre

18

Utilisez recode.

$ echo 'Hello, & world! "' | recode HTML_4.0 
Hello, & world! " 

EDIT: Soit dit en passant, recode offre plusieurs différentes conversions correspondant à différentes versions de HTML et XML, de sorte que vous pouvez utiliser par exemple HTML_3.2 au lieu de HTML_4.0 si vous avez un document HTML vraiment vieux. Courir recode -l liste toute la liste complète des charsets pris en charge par le programme.

+1

'$ man recode' Aucune entrée manuelle pour recoder' $ bash type recode': Type: recodage: non trouvé (pour ne pas dire qu'il est pas excellent, mais est-il une partie de la toolchain norme?) –

+0

@Stephen: Vous devez d'abord l'installer. – Cam

+0

@Stephen P: Évidemment, il n'est pas installé sur votre ordinateur. Il est discutable (AFAIK) si 'recode' fait partie de la chaîne d'outils standard, mais il est très commun, et s'il n'est pas considéré comme faisant partie de la chaîne d'outils, je doute que tout ce qui est pourrait faire l'affaire. –

5
alias decode="php -r 'echo html_entity_decode(fgets(STDIN));'" 

$ echo 'Hello, & world! "' | decode 
Hello, & world! " 
+0

C'est cool, donc +1. Cela ne répond pas vraiment à ma question - je cherchais quelque chose comme David. – Cam

+0

merci aussi, j'ai fini par utiliser les deux réponses comme php est inclus sur Mac, sinon c'est recoder. –