Une façon est de simplement traiter les fichiers binaires en tant que texte de toute façon, avec grep --text
mais cela peut résultat en binaire de l'information envoyé à votre terminal. Ce n'est pas vraiment une bonne idée si vous utilisez un terminal qui interprète le flux de sortie (tels que VT/DEC ou beaucoup d'autres).
Alternativement, vous pouvez cat
votre dossier par tr
avec la commande suivante:
cat test.log | tr '[\000-\011\013-\037\177-\377]' '.' | grep whatever
Cela va changer quoi que ce soit à moins d'un caractère espace (à l'exception de retour à la ligne) et quelque chose de plus grand que 126, en .
caractère, ne laissant que les printables.
Si vous voulez tous les "illégaux" caractère remplacé par un autre, vous pouvez utiliser quelque chose comme le programme C suivant, un classique de l'entrée standard de filtre:
#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;
}
Cela vous donnera {{NN}}
où NN
est le code hexadécimal du caractère et avec un espace de chaque côté. Vous pouvez régler simplement l' printf
quelque soit la sortie que vous voulez.