Sed
有沒有辦法去除文件中每個字節的高位?
我一直在試圖弄清楚這是否可以在
sed
or中完成tr
,但我找不到。我有一堆來自舊 Apple II 的文件,每個字節都設置了高位。在 Mac 上,這會導致一堆亂碼。當然,我可以編寫一個程序來對每個字節進行異或 80 美元,但我認為 UNIX 中必須有一種方法可以做到這一點!
有任何想法嗎?
bbe
是“一個類似 sed 的二進製文件編輯器”。在 Debian 中,它位於bbe
軟體包中;我不知道它在 Mac 上是否容易獲得。
0x7f
這對輸入的每個字節執行二進制與:bbe -e '& \x7f'
範例用法:
<input_file bbe -e '& \x7f' >output_file
Perl 來救援!
perl -wpe '$_ &= "\x7f" x length' < file
如果要逐行處理文件(例如,當文件太大而無法放入記憶體時),請指定十六進制行分隔符:
perl -0x8d ...
(我不確定 0x0d 是否是 Apple II 上的換行符,因此請根據需要修復該值)。