Chci najít datum, které je někde v 8GB protokolu (text).
Mohu poněkud obejít úplné sekvenční čtení a nejprve provést binární rozdělení souboru (velikost) nebo se nějak pohybovat v souborovém systému inodes
(což velmi vím little about), začít číst od každého dělicího bodu, dokud nenajdu vhodný posun od místa, kde začít s hledáním textu pro řádek obsahující datum?
tail
's čtení posledního řádku nepoužívá normální sekvenční čtení, takže by mě zajímalo, jestli je tato možnost nějak dostupná v bash, nebo bych potřeboval použít Python nebo C/C++… ale konkrétně mě zajímá bash
možnost..
Přijatá odpověď:
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
který .. nevytváří žádné dočasné soubory, přeskakuje bloky * 512 MB dat při každém spuštění, čte 64 bajtů z této pozice a omezuje výstup na první řádek z těchto 64 bajtů.
možná budete chtít upravit 64 podle toho, co si myslíte, že potřebujete.