파일에서 각 바이트의 상위 비트를 제거하는 방법이 있습니까?

파일에서 각 바이트의 상위 비트를 제거하는 방법이 있습니까?

sed이 작업 을 에서 수행 할 수 있는지 알아내려고 노력했지만 tr찾을 수 없습니다.

모든 바이트에 상위 비트가 설정된 오래된 Apple II의 파일이 많이 있습니다. Mac에서는 이로 인해 횡설수설이 발생합니다. 물론, 80달러에 각 바이트를 XOR하는 프로그램을 작성할 수 있지만 UNIX에서 이를 수행할 수 있는 방법이 있어야 한다고 생각했습니다!

어떤 아이디어가 있나요?

답변1

bbe"sed와 유사한 바이너리 파일 편집기"입니다. 데비안에서는 bbe패키지에 들어 있습니다. Mac에서 쉽게 사용할 수 있는지는 모르겠습니다.

0x7f이는 입력의 각 바이트에 대해 이진 AND를 수행합니다.

bbe -e '& \x7f'

사용 예:

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

답변2

Perl이 구출하러 옵니다!

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

파일을 한 줄씩 처리하려면(예: 파일이 너무 커서 메모리에 맞지 않는 경우) 16진수 줄 구분 기호를 지정합니다.

perl -0x8d ...

(Apple II에서 0x0d가 개행 문자인지 확실하지 않으므로 필요한 경우 값을 수정하십시오.)

관련 정보