2010-12-10 29 views
52

Estoy escribiendo un script bash que necesita obtener el encabezado (primeros 10 bytes) de un archivo y luego en otra sección obtener todo excepto los primeros 10 bytes. Estos son archivos binarios y probablemente tendrán \0 y \n en los primeros 10 bytes. Parece que la mayoría de las utilidades funcionan con archivos ASCII. ¿Cuál es una buena manera de lograr esta tarea?Cómo obtener solo los primeros diez bytes de un archivo binario

Respuesta

84

para obtener los primeros 10 bytes, como ya se ha señalado:

head -c 10 

para obtener todos excepto los primeros 10 bytes (al menos con GNU tail):

tail -c+11 
+2

Sí. Me gustó la idea 'dd', pero esta opción no requiere un cambio en el tamaño del búfer, por lo que funciona bien con archivos de gran tamaño. Gracias. – User1

26

head -c 10 hace lo correcto aquí.

+3

Es interesante que esta respuesta fue la primera, es correcta, pero los otros tienen mucho más votos ascendentes. – robert

28

Puede usar el comando dd para copiar una cantidad arbitraria de bytes desde un archivo binario.

dd if=infile of=outfile1 bs=10 count=1 
dd if=infile of=outfile2 bs=10 skip=1 
+1

Esto funciona pero es bastante lento. El bs de 10 está matando estos enormes archivos. ¿Hay una forma más rápida de saltear los primeros diez bytes? Parece tan simple. – User1

Cuestiones relacionadas