Linux command to retrieve a byte range from a file
Solution 1:
The DareDevil of the Unix commands, dd
to the rescue!
dd if=yourfile ibs=1 skip=200 count=100
That would start from byte 200 and show 100 next bytes, or in other words, bytes 200-300. ibs
means dd only reads one byte at a time instead of the default 512 bytes, but still writes out in default 512 byte chunks. Go and see if ibs
harms the performance, I hope not.
Solution 2:
If your interest is in the bytes, would od
be of more interest.
-j, --skip-bytes=bytes
-N, --read-bytes=bytes
So to read the 16 bytes starting at byte 1024, and output in ascii
od -j 1024 -N 16 -a /bin/sh
Solution 3:
You can use dd if=logfile of=pieceoflogfile skip=startingblock count=#ofblocks
(possibly with bs=1
to get one-byte blocks, otherwise it uses 512 byte blocks). Not sure how efficient it is to tell it to write one byte at a time, though.