Expediente:
O000000667520994000000074720121112000000N^@^@^@
Usé el siguiente comando pero no funciona.
grep "^@^@^@" *
Expediente:
O000000667520994000000074720121112000000N^@^@^@
Usé el siguiente comando pero no funciona.
grep "^@^@^@" *
Respuestas:
Puede grep para cualquier carácter, incluidos los caracteres de control / no imprimibles en el modo perl-regexp (-P) por su código hexadecimal:
grep -Pa '\x00' ...
grep -Pv '\x00' file
no funciona en Cygwin ...
^@
No es un quilate ^
y un signo @
, es un personaje. Así es como algunos programas muestran el carácter NUL: valor ASCII 0, también conocido como \0
en C.
Aquí he creado un archivo con un byte NUL. † Observe que uso cat -v
para mostrar caracteres que no se imprimen.
$ cat -v blah
hello
null^@
hi
$ hexdump -C blah
00000000 68 65 6c 6c 6f 0a 6e 75 6c 6c 00 0a 68 69 0a |hello.null..hi.|
0000000f
Grep tiene problemas para encontrar NUL ya que se usan para terminar cadenas en C. Sed, sin embargo, puede hacer el trabajo:
$ sed -n '/\x0/p' blah
null
$ sed -n '/\x0/p' blah | cat -v
null^@
† En vi, en el modo de inserción, presione Ctrl- V, Ctrl- Shift- @para insertar un byte nulo.
En bash, puede agregar caracteres especiales cuando tenga el prefijo C-q
o C-v
. Entonces puedes, por ejemplo
grep 'Ctrl-vCtrl-a' file.txt
La cadena de búsqueda debe leerse como control key
+ character v
, seguida de control key
+ character a
, que busca el valor ASCII SOH (01). Desafortunadamente, esto no funciona para el personaje NUL.
^ @ es el carácter NUL. ¿Qué quieres hacer con las líneas de tus archivos que lo contienen?
Puede echar un vistazo a https://stackoverflow.com/questions/2398393/identifying-and-removing-null-characters-in-unix que trata un problema similar.
El personaje ^ @ es el personaje NUL, por lo que me temo que no se puede asimilar directamente.
Probablemente su mejor opción sea escribir un programa simple que busque esta secuencia de bytes.
Alternativamente, usted puede tratar de convertirlo en algún tipo de volcado hexadecimal ( od
, xxd
o algo así) y grep en la salida de la misma. Pero hablando francamente, sería difícil hacerlo bien.
-a
opción, de lo contrariogrep
cree que son datos binarios y no mostrará las líneas coincidentes.