Fichier:
O000000667520994000000074720121112000000N^@^@^@
J'ai utilisé la commande ci-dessous mais cela ne fonctionne pas.
grep "^@^@^@" *
Vous pouvez rechercher tous les caractères, y compris les caractères de contrôle / non imprimables en mode perl-regexp (-P) par son code hexadécimal:
grep -Pa '\x00' ...
-a
option, sinongrep
pense qu'il s'agit de données binaires et n'affichera pas les lignes correspondantes.grep -Pv '\x00' file
ne fonctionne pas dans Cygwin ...-a
(parfois?) il ne trouve même pas le motif. Merci! Pourrait également aider @pbies.^@
n'est pas un carat^
et un signe@
, c'est un caractère. C'est ainsi que certains programmes affichent le caractère NUL - la valeur ASCII 0, également appelée\0
C.Ici, j'ai créé un fichier contenant un octet NUL. † Notez que j'utilise
cat -v
pour afficher des caractères non imprimables.Grep a du mal à trouver des NUL car ils sont utilisés pour terminer les chaînes dans C. Sed, cependant, peut faire le travail:
† En vi, en mode insertion, appuyez sur Ctrl- V, Ctrl- Shift- @pour insérer un octet nul.
la source
Si
grep -P
cela ne fonctionne pas (par exemple sur OS X), essayez ceci:la source
grep -Pa '\x00' ...
En bash, vous pouvez ajouter des caractères spéciaux avec le préfixe
C-q
ouC-v
. Vous pouvez donc, par exempleLa chaîne de recherche doit être lue comme
control key
+character v
, suivi decontrol key
+character a
, qui recherche la valeur ASCII SOH (01). Malheureusement, cela ne fonctionne pas pour le caractère NUL.la source
^ @ est le caractère NUL. Que voulez-vous faire avec les lignes de vos fichiers qui le contiennent?
Vous pouvez jeter un oeil à /programming/2398393/identifying-and-removing-null-characters-in-unix qui traite d'une question similaire.
la source
Le caractère ^ @ est le caractère NUL, donc je crains qu'il ne puisse pas être saisi directement.
Votre meilleure option serait probablement d'écrire un programme simple qui recherche cette séquence d'octets.
Alternativement, vous pouvez essayer de le convertir en une certaine forme de vidage hexadécimal (
od
,xxd
ou ainsi) et grep dans la sortie de celui-ci. Mais franchement, il serait difficile de bien faire les choses.la source