Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash脚本中从HTML字符引用更改为utf-8,即ā 成为ā;_Bash_Utf 8_Character Encoding - Fatal编程技术网

在bash脚本中从HTML字符引用更改为utf-8,即ā 成为ā;

在bash脚本中从HTML字符引用更改为utf-8,即ā 成为ā;,bash,utf-8,character-encoding,Bash,Utf 8,Character Encoding,如何将包含以下字符引用的文档转换为bash脚本中的实际可读字符 ā á ǎ à ē é ě è ī í ǐ ì ǖ ǘ ǚ ǜ ü ǖ ǘ &#474

如何将包含以下字符引用的文档转换为bash脚本中的实际可读字符

ā á ǎ à ē é ě è ī í ǐ ì ǖ ǘ ǚ ǜ ü ǖ ǘ ǚ ǜ ü

这些更改是为了āáǎēěīǐ़በǚǜǜǚǜ

如果您可以访问Perl,那么它相对简单:

perl -ne 'binmode STDOUT,":utf8";s/&#([0-9]*);/pack("U",$1)/eg;print' \
  document.html
例如:

#!/bin/bash
html2utf8() {
  perl -ne 'binmode STDOUT, ":utf8"; s/&#([0-9]*);/pack("U",$1)/eg; print'
}
echo 'testing 1 ā 2 Ĭ 3 ē' | html2utf8
产生:

testing 1 ā 2 Ĭ 3 ē

如果您正在寻找一种只有bash的方法来实现这一点,那么这个线程中似乎有一些解决方案:

stackoverflow允许HTML实体。我的第一个反应是使用sed,如果它只是那些实体。这样就可以直接更换。但是,如果你想让它对任意实体起作用,那么我不能马上想到任何事情(遗憾的是,我不是一个主要的sh人)。是的,我已经访问了perl,所以这可能是最简单、最整洁的方法。老实说,无论如何,整个项目最好在珍珠城完成