Tengo archivos binarios que deberían ser texto (son registros exportados), pero no puedo abrirlo con menos (se ve feo, parece un archivo binario). Descubrí que podía abrirlo con vi y puedo capturarlo (verás los registros reales), pero lo que realmente me gustaría hacer es revisarlos (sin tener que abrir cada uno con vi y luego realizar una búsqueda). ¿Hay alguna manera de hacer eso?
76
grep -a
?Respuestas:
Puede utilizar de
grep
todos modos para buscar en el archivo; realmente no le importa si el archivo de entrada es realmente texto o no. De 'man grep':Marque las palabras de precaución al final del segundo párrafo. Es posible que desee redirigir los resultados de grep a un nuevo archivo y examinar esto con vi / less.
fuente
Conéctelo
strings
, lo que eliminará todo el código binario dejando solo el texto.fuente
strings
aparentemente no entiende utf-8 es texto.Darle
bgrep
una oportunidad. ( lanzamiento original / bifurcación más reciente )fuente
\x
no funciona realmente como aquígrep -P "\x05\x00\xc0" mybinaryfile
.bgrep "fafafafa" test_27.6.2015.bin |less
pero obtengo test_27.6.2015.bin: 00005ee4 . Asumiría obtener fafafafa , ya que estaba buscando esto. No hay manual en el hombre. ¿Alguna idea de por qué tal salida?grep -a
?bash: bgrep: command not found...
yNo package bgrep available
.Puedes usar estos tres comandos:
grep -a <sth> file.txt
cat -v file.txt | grep <sth>
cat file.txt | tr '[\000-\011\013-\037\177-\377]' '.' | grep <sth>
fuente
A partir de Grep 2.21, los archivos binarios se tratan de manera diferente :
Entonces, lo que sucede ahora es que con los datos binarios, todos los bytes que no son de texto (incluidas las nuevas líneas) se tratan como terminadores de línea. Si desea cambiar este comportamiento, puede:
uso
--text
. Esto asegurará que solo las nuevas líneas sean terminadores de líneauso
--null-data
. Esto asegurará que solo los bytes nulos sean terminadores de líneafuente