题 如何从Linux中的标准输入流轻松转换HTML特殊实体?


CentOS的

有没有一种从数据流转换HTML特殊实体的简单方法?我将数据传递给bash脚本,有时这些数据包含特殊实体。例如:

“测试”&测试$ test!测试@#$%^& *

我不确定为什么有些角色会显得很好而其他角色却没有,但不幸的是,我无法控制进来的数据。

我想我可以在这里使用SED,但这似乎很麻烦,可能容易出现误报。是否有我可以管道的Linux命令专门解码这种类型的数据?


6
2017-10-22 02:21






答案:


PHP非常适合这种情况。这个例子需要PHP 5:

cat file.html | php -R 'echo html_entity_decode($argn);'

7
2017-10-22 02:33





Perl(一如既往)是你的朋友。 我想这会做到:

perl -n -mHTML::Entities -e ' ; print HTML::Entities::decode_entities($_) ;'

例如。:

echo '"test" & test $test ! test @ # $ % ^ & *' |perl -n -mHTML::Entities -e ' ; print HTML::Entities::decode_entities($_) ;'

带输出:

someguy@somehost ~]$ echo '"test" & test $test ! test @ # $ % ^ & *' |perl -n -mHTML::Entities -e ' ; print HTML::Entities::decode_entities($_) ;'
"test" & test $test ! test @ # $ % ^ & *

11
2017-10-22 05:51



这适用于我的OSX10.8笔记本电脑和RHEL5.something主机。 - Jason Tan
要以UTF-8输出文件,请使用binmode:echo“«” | perl -n -mHTML :: Entities -mutf8 -e'binmode(STDOUT,“:utf8”); print HTML :: Entities :: decode_entities($ _);' - falstaff


重新编码 似乎在主要GNU / Linux发行版的默认包存储库中可用。例如。将HTML实体解码为UTF-8:

…|recode html..utf8

3
2018-04-03 09:57





使用Python 3:

python3 -c 'import html,sys; print(html.unescape(sys.stdin.read()), end="")' < file.html

1
2018-03-27 12:59





从stdin获取文本文件:

#!/bin/bash
#
while read lin; do
  newl=${lin//&gt;/>}
  newl=${newl//&lt;/<}
  newl=${newl//&amp;/<}
  # ...other entites
  echo "$newl"
done

它可能需要bash> = version 4


0
2017-10-04 18:42