Risposte:
Il DareDevil dei comandi Unix, ddin soccorso!
dd if=yourfile ibs=1 skip=200 count=100
Ciò inizierebbe dal byte 200 e mostrerebbe 100 byte successivi o, in altre parole, byte 200-300. ibssignifica che dd legge solo un byte alla volta anziché i 512 byte predefiniti, ma scrive ancora in blocchi predefiniti da 512 byte. Vai a vedere se ibsdanneggia la performance, spero di no.
Puoi usare dd if=logfile of=pieceoflogfile skip=startingblock count=#ofblocks(possibilmente con bs=1per ottenere blocchi da un byte, altrimenti usa blocchi da 512 byte). Non sono sicuro di quanto sia efficace dirgli di scrivere un byte alla volta, però.
ddpossono essere incatenati insieme (il 1 ° potrebbe tagliare il pezzo grasso e il 2 farebbe un buon lavoro sul tubo, non sul disco), ma ddnon ha solo bsma separato ibse obspure, quindi a almeno potrebbe essere emesso con blocchi più grandi della lettura.
Supponendo che il file non sia eccessivamente grande (ad es. Diversi GB o giù di lì), il piping da uno all'altro è efficiente quanto si ottiene, a meno di scrivere il proprio programma per farlo.
head ... file | tail ...
(O viceversa. Qualunque sia.)
time dd if=file.txt | wc -l= 00: 00: 03s.time dd if=file.txt ibs=1 count=782090815 | wc -l= 9:05:19