Ich möchte ein Datum finden, das sich irgendwo in einem 8-GB-Protokoll (Text) befindet.
Kann ich ein vollständiges sequenzielles Lesen etwas umgehen und zuerst binäre Aufteilungen der Datei (Größe) durchführen oder irgendwie durch die inodes
des Dateisystems navigieren (was ich sehr weiß etwas über), um von jedem Teilungspunkt aus zu lesen, bis ich einen geeigneten Offset finde, von wo aus ich meine Textsuche nach einer Zeile mit dem Datum starten kann?
tail
Das Lesen der letzten Zeile verwendet kein normales sequentielles Lesen, daher frage ich mich, ob diese Einrichtung irgendwie in Bash verfügbar ist oder ob ich Python oder C/C++ verwenden müsste … aber ich interessiere mich speziell für einen bash
Option..
Akzeptierte Antwort:
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
was .. keine Temp-Split-Dateien erstellt, Blöcke überspringt * 512 MB Daten bei jedem Durchlauf, 64 Bytes von dieser Position liest und die Ausgabe auf die erste Zeile dieser 64 Bytes begrenzt.
Vielleicht möchten Sie 64 so anpassen, wie Sie es für nötig halten.