GNU/Linux >> Znalost Linux >  >> Linux

Je možné v Bash začít číst soubor z libovolného offsetu počtu bajtů?

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.


Linux
  1. Ekvivalentní soubor „.bashrc“ čtený všemi shelly?

  2. Bash skript k odstranění nejstaršího souboru ze složky?

  3. Jak číst proměnnou ze souboru?

  1. Čtení ze souboru v sestavě

  2. Získejte polohu města z IP adres v souboru

  3. Extrahujte chybějící cesty z bashového pole cest

  1. Je možné zjistit, který Vim/tmux má soubor otevřený?

  2. Vytvořit data pro čtení textu ze souboru?

  3. Jak číst řetězec jako hexadecimální číslo v Bash?