한 가지 방법은 이진 파일을 텍스트로 간단히 처리하는 grep --text
것이지만 이로 인해 이진 정보가 터미널로 전송 될 수 있습니다. 출력 스트림 (VT / DEC 등)을 해석하는 터미널을 실행하는 경우에는 실제로 좋은 생각이 아닙니다.
또는 tr
다음 명령 을 사용 하여 파일을 보낼 수 있습니다 .
tr '[\000-\011\013-\037\177-\377]' '.' <test.log | grep whatever
이것은 공백 문자 (개행 제외)보다 작은 문자와 126보다 큰 .
문자를 문자 로 변경 하여 인쇄 가능 항목 만 남깁니다.
모든 "불법"문자를 다른 문자로 바꾸려면 다음 C 프로그램과 같은 고전적인 표준 입력 필터를 사용할 수 있습니다.
#include<stdio.h>
int main (void) {
int ch;
while ((ch = getchar()) != EOF) {
if ((ch == '\n') || ((ch >= ' ') && (ch <= '~'))) {
putchar (ch);
} else {
printf ("{{%02x}}", ch);
}
}
return 0;
}
이것은 당신을 줄 것이다 {{NN}}
경우, NN
문자의 16 진수 코드입니다. 간단히 조정할 수 있습니다.printf
원하는 출력 스타일에 대해 .
여기에서 해당 프로그램이 작동하는 것을 볼 수 있습니다.
pax$ printf 'Hello,\tBob\nGoodbye, Bob\n' | ./filterProg
Hello,{{09}}Bob
Goodbye, Bob