【问题标题】:What sed script can replace a range of hex characters with another什么 sed 脚本可以用另一个字符替换一系列十六进制字符
【发布时间】:2012-08-18 04:45:15
【问题描述】:

我需要用空格替换一些自动生成的文件中的一些非文本字符。 虽然它们是文本文件,处理后添加了一些字符,不能再作为文本编辑了

有没有 sed 命令可以做到这一点?

【问题讨论】:

    标签: search replace sed binary hex


    【解决方案1】:

    根据您的平台和sed 版本,您可能会也可能无法执行s/[\000-\037]/ /g 之类的操作;但便携和简单的替代方案是这样的:

    tr '\000-\037' ' ' <input >output
    

    (所有字符代码都是“二进制”;我假设您的意思是控制字符,但如果您的意思是 8 位字符 \200-\377 或其他什么,调整范围显然是微不足道的。)

    【讨论】:

    • 我认为它们是 128-255 范围内的字符。一些错误的处理正在添加它们并且文本编辑器无法打开它们。当我使用颜色突出显示 grep 时,它们是可见的并显示为?。一些基于 UTF-8 的错误处理会导致这种情况吗?
    • 那是 \200-\377 八进制。在不知道更多的情况下无法真正推测原因,但听起来不像是 UTF-8 问题,不是。
    • 考虑tr -c '[:print:]\n' ' '
    猜你喜欢
    • 2011-12-07
    • 2018-06-06
    • 2013-03-12
    • 2018-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 2018-01-31
    相关资源
    最近更新 更多