首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用sed & regex将十六进制字符转换为ASCII

如何使用sed & regex将十六进制字符转换为ASCII
EN

Stack Overflow用户
提问于 2021-10-11 15:04:37
回答 1查看 128关注 0票数 2

我有一个文件,文件中有几个用十六进制编码的特殊字符(其他单词是可读的)。我想使用sed来使用\xHH来转换它们,但是我无法使用regex来匹配转换的十六进制值。

如果我手动强制使用Hexa值,它可以工作:

代码语言:javascript
复制
[user@Centos7]$ echo "aaaíaaa" | sed -r 's/&#x([[:xdigit:]]+);/\xED/g'
aaaíaaa

但是,如果我尝试使用重用来自regex的匹配以使用\xHH将其转换为ACSII值,则=>失败,结果是匹配的值。

代码语言:javascript
复制
[user@Centos7]$ echo "aaaíaaa" | sed -r 's/&#x([[:xdigit:]]+);/\x\1/g'
aaaxEDaaa

有什么线索能帮到我吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-11 17:27:46

您可以使用perl使用MHTML::Entities来实现这一点。

代码语言:javascript
复制
echo 'aaaíaaa' | perl -MHTML::Entities -CS -pe '$_ = decode_entities($_)'

在线演示

这里,

  • 由于-CS,Perl允许STDOUT中的UTF-8字符。
  • decode_entities($string)例程将$string中的HTML替换为相应的Unicode字符(n可识别的实体保持原样)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69528436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档