Sed

有沒有辦法去除文件中每個字節的高位?

  • April 1, 2021

我一直在試圖弄清楚這是否可以在sedor中完成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 上的換行符,因此請根據需要修復該值)。

引用自:https://unix.stackexchange.com/questions/643160