问题描述

我正在寻找一种方法来改变:

hello < world

到这个:

hello < world

我可以使用 sed,但是如何才能实现,而不使用隐含的正则表达式?

最佳解决办法

尝试 recode(archived page; GitHub mirror; Debian page):

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

安装在 Linux 和类似的 Unix-y 系统上:

$ sudo apt-get install recode

在 Mac OS 上安装:

$ brew install recode

次佳解决办法

用 perl:

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

从命令行使用 php:

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

第三种解决办法

另一种方法是通过 Web 浏览器进行管理,例如:

echo '!' | w3m -dump -T text/html

对于 cygwin 来说,这对我来说非常有用,下载和安装分发是困难的。

这个答案发现 here

第四种办法

使用 xmlstarlet:

echo 'hello &lt; world' | xmlstarlet unesc

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛