我一直试图弄清楚这是否可以在sed
or中完成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 上是否是换行符,因此请根据需要修复该值)。