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.