问题描述
我正在寻找一种方法来改变:
hello < world
到这个:
hello < world
我可以使用 sed,但是如何才能实现,而不使用隐含的正则表达式?
最佳解决办法
尝试 recode(archived page; GitHub mirror; Debian page):
$ echo '<' |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 < world' | xmlstarlet unesc
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。