GNU/Linux >> Tutoriales Linux >  >> Linux

¿Es posible en Bash, comenzar a leer un archivo desde un desplazamiento de conteo de bytes arbitrario?

Quiero ubicar una fecha que está en algún lugar de un registro de 8 GB (texto).

¿Puedo omitir de alguna manera una lectura secuencial completa y primero hacer divisiones binarias del archivo (tamaño) o navegar de alguna manera por el sistema de archivos inodes? (que conozco muy poco sobre), para comenzar a leer desde cada punto de división, hasta que encuentre un desplazamiento adecuado desde donde comenzar mi búsqueda de texto para una línea que contenga la fecha?

tail La lectura de la última línea no usa una lectura secuencial normal, por lo que me pregunto si esta función está disponible de alguna manera en bash, o si necesitaría usar Python o C/C++... pero estoy específicamente interesado en un bash opción..

Respuesta aceptada:

for (( block = 0; block < 16; block += 1 ))
do 
    echo $block; 
    dd if=INPUTFILE skip=$((block*512))MB bs=64 count=1 status=noxfer 2> /dev/null | 
        head -n 1
done

que... no crea archivos de división temporal, omite bloques * 512 MB de datos en cada ejecución, lee 64 bytes desde esa posición y limita la salida a la primera línea de esos 64 bytes.

es posible que desee ajustar 64 a lo que crea que necesita.


Linux
  1. ¿Archivo equivalente ".bashrc" leído por todos los shells?

  2. Bash Script para eliminar el archivo más antiguo de una carpeta?

  3. ¿Es posible encontrar qué Vim/tmux tiene el archivo abierto?

  4. ¿Cómo leer una cadena como número hexadecimal en Bash?

  5. Lectura de líneas de un archivo con Bash:para vs. ¿Mientras?

Cómo leer archivos línea por línea en Bash

Cómo leer un archivo línea por línea en Bash

Bash scripting:cómo leer datos de archivos de texto

Obtenga la ubicación de la ciudad a partir de direcciones IP dentro de un archivo

Comando de Linux para recuperar un rango de bytes de un archivo

Extraiga las rutas que faltan de la matriz de rutas de bash