有没有办法去掉文件中每个字节的高位?

有没有办法去掉文件中每个字节的高位?

我一直试图弄清楚这是否可以在sedor中完成tr,但我找不到它。

我有一堆来自旧 Apple II 的文件,每个字节都设置了高位。在 Mac 上,这会导致一堆乱码。当然,我可以编写一个程序来异或每个字节 80 美元,但我认为 UNIX 中必须有一种方法可以做到这一点!

有任何想法吗?

答案1

bbe是“一个类似于 sed 的二进制文件编辑器”。在 Debian 中,它位于bbe软件包中;我不知道 Mac 上是否可以轻松使用它。

0x7f这对输入的每个字节执行二进制与:

bbe -e '& \x7f'

用法示例:

<input_file bbe -e '& \x7f' >output_file

答案2

Perl 来救援!

perl -wpe '$_ &= "\x7f" x length' < file

如果要逐行处理文件(例如,当文件太大而无法放入内存时),请指定十六进制行分隔符:

perl -0x8d ...

(我不确定 0x0d 在 Apple II 上是否是换行符,因此请根据需要修复该值)。

相关内容