GNU/Linux >> Linux Esercitazione >  >> Linux

È possibile in Bash iniziare a leggere un file da un offset arbitrario del conteggio dei byte?

Voglio individuare una data che si trova da qualche parte in un registro di 8 GB (testo).

Posso in qualche modo bypassare una lettura sequenziale completa e prima eseguire le divisioni binarie del file (dimensione) o in qualche modo navigare nel filesystem inodes (che conosco molto poco circa), per iniziare a leggere da ogni punto di divisione, finché non trovo uno scostamento adatto da dove iniziare la mia ricerca di testo per una riga contenente la data?

tail La lettura dell'ultima riga non usa una normale lettura sequenziale, quindi mi chiedo se questa funzione sia in qualche modo disponibile in bash, o dovrei usare Python o C/C++... ma sono specificamente interessato a un bash opzione..

Risposta accettata:

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

che .. non crea file di suddivisione temporanea, salta blocchi * 512 MB di dati a ogni esecuzione, legge 64 byte da quella posizione e limita l'output alla prima riga di quei 64 byte.

potresti voler adattare 64 a qualsiasi cosa pensi di aver bisogno.


Linux
  1. Script Bash per rimuovere il file più vecchio da una cartella?

  2. Creare dati di lettura di testo da un file?

  3. Come leggere una variabile da un file?

  4. Lettura da un file in assembly

  5. Rimuovi una determinata riga dal file della cronologia di Bash

Come leggere i file riga per riga in Bash

Come leggere un file riga per riga in Bash

Scripting Bash:come leggere i dati dai file di testo

Ottieni la posizione della città dagli indirizzi IP all'interno di un file

Comando Linux per recuperare un intervallo di byte da un file

Estrai i percorsi mancanti dall'array di percorsi bash