ファイルから各バイトの上位ビットを削除する方法はありますか?

ファイルから各バイトの上位ビットを削除する方法はありますか?

sed私はこれを行うことができるかどうかを調べようとしましたが、見つかりませんでしたtr

すべてのバイトに上位ビットが設定されている古いApple IIのファイルがたくさんあります。 Macでは、これにより横説説が発生します。もちろん、80ドルで各バイトをXORするプログラムを書くことができますが、UNIXでこれを行う方法があるべきだと思いました!

どんなアイデアがありますか?

答え1

bbe「sedに似たバイナリファイルエディタ」です。 Debian ではbbeパッケージに含まれています。 Macで簡単に利用できるかどうかはわかりません。

0x7fこれは、入力の各バイトに対してバイナリANDを実行します。

bbe -e '& \x7f'

使用例:

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

答え2

Perlが救出に来る!

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

ファイルを1行ずつ処理するには(ファイルが大きすぎてメモリーに収まらない場合)、16進行区切り文字を指定します。

perl -0x8d ...

(Apple IIでは、0x0dが改行文字であるかどうかわからないので、必要に応じて値を修正してください。)

関連情報